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

import java.util.Map;

import es.ejie.frmk.infraestructura.logs.base.impl.Q70LogImpl;

/**
 * Interfaz a implementar para representar un log. 
 * Geremua es independiente del sistema de logging a utilizado. El interfaz Q70Log
 * proporciona parte de esta abstracción. Se debe proporcionar una implementación
 * concreta e incluirla en el fichero de configuración de los logs.
 * Actualmente se proporciona una implementación basada en log4j.
 * @see Q70LogImpl 
 * 
 * @author Carlos Rodriguez
 * @version 1.0  fecha: 10-dic-03
 * 
 */
public interface Q70Log
{
	/**
	 * la función log debe escribir el mensaje representado por un hashmap.
	 * El log habrá sido previamente creado por la Q70LogFactory momento en el que se 
	 * le habrá indicado dónde y como debe realizar la salida.
	 * @param hm Q70Mensaje. Las claves son utilizadas para salidas a BD dónde éstas son
	 * usadas como nombre de los campos. (En futuras versiones podría indicarse en el
	 * fichero de configuración)
	 */
	public void log(Map hm);
	
	
	/**
	 * Debe indicar si el log está o no activado con el fin de evitar la sobrecarga de
	 * crear los parámetros del mensaje.
	 * @return true si activado, false si desactivado.
	 */
	public boolean isEnabled();
	
	/**
	 * El método envía aquellos mensajes de logs que aún queda por enviar en el momento de liberar recursos al fichero
	 * de logs
	 * Estos mensajes son en evíados contra un appender descriptor de fichero y siempre y cuando el appender tenga
	 * un buffer configurado de bytes 
	 */
	public void flush ();
			
}
