
package es.ejie.frmk.infraestructura.logs.base.interfaces;

import es.ejie.frmk.control.excepciones.Q70FrameworkException;
import es.ejie.frmk.infraestructura.logs.base.Q70ConfiguracionLog;
import es.ejie.frmk.infraestructura.utilidades.concurrencia.Q70Lock;


/**
 * Su responsabilidad es la de crear y configurar logs. Se utiliza para proporcionar
 * independencia de sistema de loggin usado en la plataforma. La implementación real
 * se especifica en el fichero de configuración de logs. 
 * @author Carlos Rodriguez
 * @version 1.0  fecha: 10-dic-03
 * 
 */
public interface Q70LogFactory
{
	/**
	 * Su implementación debe devolver un log configurado segun los parámetros 
	 * @param name Nombre del log
	 * @param config Colección de propiedades necesarias para configurar el log
	 * @param commonDataManager Referencia a los datos comunes asociados al thread.
	 * @param lock objeto para suspender los logs mientras se reconfigura el Componente
	 * @return
	 * @throws Q70FrameworkException 
	 */
	Q70Log getLog(String name, Q70ConfiguracionLog config,Q70GestorDatosComunes commonDataManager, Q70Lock lock ) throws Q70FrameworkException;
	
	/**
	 * Su implementación debe vaciar todos los logs que funcionan a través de un buffer.
	 */
	public void flushAll();
}