1.Ventajas de Log4j
Log4j es un proyecto de código abierto de Apache. Al usar Log4j, podemos controlar la ubicación de entrega de la información del registro; también podemos controlar el formato de salida de cada registro al definir el nivel de cada información de registro; detalle del proceso de generación. Lo más interesante es que se pueden configurar de forma flexible a través de un archivo de configuración sin modificar el código de la aplicación.
Los beneficios de log4j son:
(1) Al modificar el archivo de configuración, puede decidir el destino de la información de registro: consola, archivo, componente GUI, incluso servidor de socket, grabador de eventos NT, demonio Syslog de UNIX, etc.
(2) Al modificar el archivo de configuración, puede definir el nivel de cada mensaje de registro para controlar si se genera. Durante la etapa de desarrollo del sistema, se puede imprimir información de registro detallada para rastrear la operación del sistema. Una vez que el sistema esté estable, se puede desactivar la salida del registro, rastreando así la operación del sistema y reduciendo el código basura (System.out.println(.. ....)esperar).
(3) El uso de log4j requiere un mecanismo de registro unificado para todo el sistema, lo que favorece la planificación del sistema.
2. Archivo de configuración
Log4j consta de tres componentes importantes: la prioridad de la información de registro, el destino de salida de la información de registro y el formato de salida de la información de registro. Las prioridades de la información de registro de mayor a menor incluyen FATAL, ERROR, WARN, INFO, DEBUG, TRACE y ALL, que se utilizan para especificar la importancia de esta información de registro, respectivamente, el destino de salida de la información de registro especifica que el registro; se imprimirá en la consola o en el archivo; y el formato de salida controla el contenido de visualización de la información del registro.
2.1 Prioridad de la información de registro
Log4j recomienda usar solo cuatro niveles. Las prioridades de mayor a menor son ERROR, WARN, INFO y DEBUG. A través de los niveles definidos aquí, puede controlar el encendido y apagado del nivel correspondiente de información de registro en la aplicación. Si el nivel INFO se define aquí, no se imprimirá toda la información de registro por debajo del nivel INFO en la aplicación.
2.2 Uso de fuentes de salida
Habilitar o deshabilitar selectivamente las solicitudes de registro es solo una parte de la funcionalidad de Log4j. Log4j permite enviar solicitudes de registro a múltiples fuentes de salida. En términos de Log4j, una fuente de salida se denomina Appender.
Appender incluye consola, archivos, componentes GUI, servidores de socket remotos, JMS, registradores de eventos NT y demonios Syslog remotos de UNIX (servicio de registro en segundo plano de UNIX remoto). También puede grabar de forma asincrónica. Un registrador puede configurar más de un agregador. Agregue un agregado a un registrador determinado usando el método addAppender. Para un registrador determinado, cada solicitud de registro válida se reenvía a todos los agregados del registrador y a los agregados del registrador principal del registrador.
2.2.1 ConsolaAppender
Si se utiliza ConsoleAppender, la información de registro se escribirá en la Consola. El efecto es equivalente a imprimir información directamente en System.out.
2.2.2 FileAppender
Al utilizar FileAppender, la información de registro se escribirá en el archivo especificado. Esta debería ser una situación utilizada con más frecuencia. En consecuencia, el nombre del archivo de salida del registro debe especificarse en el archivo de configuración. La siguiente configuración especifica el nombre del archivo de registro log.txt.
log4j.appender.appendername.File=log.txt Tenga en cuenta que appendername se reemplaza por el alias de Appender en la configuración específica.
Nota: Problema con la ruta del archivo de registro especificado
2.2.3 Appender rodante diario
Puede utilizar FileAppender para generar información de registro en un archivo, pero si el archivo es demasiado grande, será incómodo leerlo. En este momento puedes usar DailyRollingAppender. DailyRollingAppender puede generar información de registro en archivos separados por fecha. El archivo de configuración generará un archivo de registro todos los días (se puede configurar la hora), y cada archivo de registro solo registra la información de registro de ese día:
Copie el código de código de la siguiente manera:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'aaaa-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
Se genera un nuevo archivo cuando el tamaño del archivo alcanza el tamaño especificado.
Copie el código de código de la siguiente manera:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Controlar el tamaño máximo del archivo de registro
log4j.appender.appendername.MaxFileSize=100KB
# Archivar archivos de registro (un archivo de respaldo aquí)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
Este archivo de configuración especifica el nombre del appendername de la fuente de salida, que es un archivo de registro rotativo. El archivo más grande es de 100 KB. Cuando un archivo de registro alcanza el tamaño máximo, Log4J cambiará automáticamente el nombre de rlog.log a rlog.log.1, luego reconstruirá un nuevo archivo rlog.log y lo rotará en secuencia.
2.2.5 EscritorAppender
Envíe información de registro a cualquier lugar especificado en formato de transmisión.
2.3 Configuración de diseño
El diseño especifica el estilo de salida de la información del registro.
2.3.1 Estilo de diseño
Copie el código de código de la siguiente manera:
org.apache.log4j.HTMLLayout (diseño en formato de tabla HTML),
org.apache.log4j.PatternLayout (puede especificar patrones de diseño de manera flexible),
org.apache.log4j.SimpleLayout (contiene el nivel y la cadena de información de la información del registro),
org.apache.log4j.TTCCLayout (contiene información sobre el tiempo de generación del registro, subproceso, categoría, etc.)
2.3.2 Formato
Copie el código de código de la siguiente manera:
%m genera el mensaje especificado en el código
%p prioridad de salida, es decir, DEBUG, INFO, WARN, ERROR, FATAL
%r Genera la cantidad de milisegundos que tomó desde el inicio de la aplicación hasta generar la información del registro.
%c genera la categoría a la que pertenece, normalmente el nombre completo de la clase.
%t genera el nombre del hilo que generó el evento de registro
%n genera un carácter de retorno de carro y avance de línea, que es "rn" en la plataforma Windows y "n" en la plataforma Unix.
%d genera la fecha u hora del punto de tiempo del registro. El formato predeterminado es ISO8601. También puede especificar el formato después, como por ejemplo: %d{yyy MMM dd HH:mm:ss,SSS}. : 18 de octubre de 2002. 22:10:28,921
%l Muestra la ubicación donde ocurrió el evento de registro, incluido el nombre de la categoría, el hilo donde ocurrió y el número de línea en el código. Ejemplo: Testlog4.main(Test Log4.java:10)
3.Establezca niveles de salida de registros para diferentes Appenders
Esto se puede lograr modificando el umbral del Appender en la configuración, como en el siguiente ejemplo:
Archivo de configuración:
log4j.rootLogger = depurar,A,B,C
#Salida a consola
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = Sistema.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# Salida al archivo de registro
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = registros/log.log
log4j.appender.B.Append = verdadero
log4j.appender.B.Threshold = DEBUG # Registros de salida por encima del nivel EBUG
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# Guardar información de excepción en un archivo separado
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Nombre del archivo de registro de excepción
log4j.appender.C.Append = verdadero
log4j.appender.C.Threshold = ERROR #Solo registros de salida por encima del nivel de ERROR
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
ejemplo:
Copie el código de código de la siguiente manera:
clase pública TestLog4j
{
principal vacío estático público (String [] args)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
Registrador registrador = Logger.getLogger(TestLog4j.class);
logger.debug("depurar");
logger.error("error");
}
}