236 lines
5.2 KiB
Java
236 lines
5.2 KiB
Java
/**
|
|
* @(#) 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 <a href="mailto:sistemas@imqnavarra.com">Dpto. Informática</a>.
|
|
* @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 <code>Properties</code> 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");
|
|
}
|
|
|
|
|
|
|
|
}
|