/** * @(#) LogTarisan.java */ package com.tarisan.log; import java.io.File; import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.Priority; import org.apache.log4j.PropertyConfigurator; /** * Gestión de mensajes de log para la aplicación Tarisan. * @author Dpto. Informática. * @version 1.0, 24/09/2003 */ public class LogTarisan { /** * Gestor de las operaciones de escritura en el fichero de log. */ public static Logger logger = null; /** * Valor por defecto para el nombre del fichero de log. */ public static final String DEF_LOG_FICHERO = "log_tarisan.txt"; /** * Valor por defecto para el directorio por defecto donde se reside el fichero de log. */ public static final String DEF_LOG_PATH = System.getProperty("user.dir"); /** * Valor por defecto para el tamaño del fichero de logs. */ public static final String DEF_LOG_TAMANO = "1MB"; /** * Valor por defecto para el número máximo de ficheros de log. */ public static final int DEF_LOG_NUMERO = 1; /** * Valor por defecto para el nivel de escritura de log. */ public static final String DEF_LOG_NIVEL = "INFO"; /** * Cadena con el nivel de escritura en el fichero de log. */ private static String nivel; /** * Nombre del fichero donde se escribirán los mensajes de log de Tarisan. */ private static String nombreFichero; /** * Número máximo de ficheros de backup del log que se generarán. */ private static int numeroFicheros; /** * Ruta en la que se almacenarán los ficheros de log. */ private static String pathFichero; /** * Nivel mínimo de escritura de log (sólo se escriben las entradas de log definidas con este valor). */ public static final int PRODUCCION = 1; /** * Tamaño máximo de cada uno de los ficheros de log. */ private static String tamanoFichero; /** * @return El nivel de log. */ public static String getNivel() { return nivel; } /** * @return El nombre del fichero de log. */ public static String getNombreFichero() { return nombreFichero; } /** * @return El número de máximo de ficheros de backup. */ public static int getNumeroFicheros() { return numeroFicheros; } /** * @return La ruta en la que se almacenan los ficheros de log. */ public static String getPathFichero() { return pathFichero; } /** * @return El tamaño máximo de cada fichero de log. */ public static String getTamanoFichero() { return tamanoFichero; } /** * @param ni El nivel de log. */ public static void setNivel(String ni) { nivel = NivelLog.toLevel(ni, NivelLog.toLevel(DEF_LOG_NIVEL)).toString(); } /** * @param nombre El nombre del fichero de log. */ public static void setNombreFichero(String nombre) { nombreFichero = nombre; } /** * @param numero El número de máximo de ficheros de backup. */ public static void setNumeroFicheros(int numero) { numeroFicheros = numero; } /** * @param path La ruta en la que se almacenan los ficheros de log. */ public static void setPathFichero(String path) { File dir = new File(path); if(dir.exists()) { pathFichero = dir.getPath(); } else { if (dir.mkdir()) { pathFichero = dir.getPath(); } else { pathFichero = DEF_LOG_PATH; } } } /** * @param tamano El tamaño máximo de cada fichero de log. */ public static void setTamanoFichero(String tamano) { long valorNum; int pos; StringBuffer valorStr = new StringBuffer(); if((pos = tamano.toUpperCase().indexOf("KB")) >= 0) { valorStr.append("KB"); } else if((pos = tamano.toUpperCase().indexOf("MB")) >= 0) { valorStr.append("MB"); } else if((pos = tamano.toUpperCase().indexOf("GB")) >= 0) { valorStr.append("GB"); } tamano = tamano.substring(0, pos); try { valorNum = Long.parseLong(tamano); tamanoFichero = valorStr.insert(0, tamano).toString(); } catch(NumberFormatException e) { tamanoFichero = DEF_LOG_TAMANO; } } /** * A partir de los valores indicados en el fichero de propiedades de la aplicación * genera un objeto Properties con las propiedades del gestor de logs. * @return Las propiedades de creación del gestor de logs. */ private static Properties cargarPropiedades() { Properties propiedades = new Properties(); propiedades.put("log4j.rootLogger", getNivel() + ", tarisan"); propiedades.put("log4j.appender.tarisan", "org.apache.log4j.RollingFileAppender"); propiedades.put("log4j.appender.tarisan.File", getPathFichero() + System.getProperty("file.separator") + getNombreFichero()); propiedades.put("log4j.appender.tarisan.MaxFileSize", getTamanoFichero()); propiedades.put("log4j.appender.tarisan.MaxBackupIndex", String.valueOf(getNumeroFicheros())); propiedades.put("log4j.appender.tarisan.layout", "org.apache.log4j.PatternLayout"); propiedades.put("log4j.appender.tarisan.layout.ConversionPattern", "%d{dd/MM/yyyy HH:mm:ss.SSS} %-5p %m [%C.%M():%L] %n"); return propiedades; } /** * Inicializa el gestor de logs de la apliación. */ public static void inicializarLog() { PropertyConfigurator.configure(cargarPropiedades()); logger = Logger.getLogger("log_de_tarisan"); } }