LOG4J emite varios archivos de registro personalizados
Si necesita emitir archivos de registro independientes en aplicaciones reales, ¿cómo puede separar el contenido requerido del registro original y formar un archivo de registro separado?
Primero veamos un archivo común log4j.properties, que registra registros en los archivos de consola y prueba.
La copia del código es la siguiente:
log4j.rootlogger = debug, stdout, logfile
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionPattern =%d%p [%c] -%m%n
log4j.appender.logfile = org.apache.log4j.rollingFilePeppers
log4j.appender.logfile.file = log/test.log
log4j.appender.logfile.maxfilesize = 128mb
log4j.appender.logfile.maxbackupindex = 3
log4j.appender.logfile.layout = org.apache.log4j.patternlayout
log4j.appender.logfile.layout.ConversionPattern =%d {yyyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
¿Qué pasa si se deben emitir múltiples archivos de registro en la misma clase? De hecho, la verdad es la misma.
La copia del código es la siguiente:
Private static log logger1 = logFactory.getLog ("mylogger1");
Private static log logger2 = logFactory.getLog ("mylogger2");
La configuración en log4j.properties es la siguiente:
La copia del código es la siguiente:
log4j.logger.mylogger1 = debug, test1
log4j.appender.test1 = org.apache.log4j.fileepeppers
log4j.appender.test1.file = log/test1.log
log4j.appender.test1.layout = org.apache.log4j.patternlayout
log4j.appender.test1.layout.conversionPattern =%d {yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
log4j.logger.mylogger2 = debug, test2
log4j.appender.test2 = org.apache.log4j.fileepeppers
log4j.appender.test2.file = log/test2.log
log4j.appender.test2.layout = org.apache.log4j.patternlayout
log4j.appender.test2.layout.conversionPattern =%d {yyyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
Se deben usar diferentes registros para diferentes registros (por ejemplo, logger1.info ("ABC") deben usarse para emitir a Test1.log).
Otro problema es que estos registros personalizados se emiten a los registros configurados por log4j.rootlogger de forma predeterminada. No te preocupes, aquí hay un interruptor:
log4j.additivity.
Se utiliza para establecer si se debe emitir al registro configurado por log4j.rootlogger al mismo tiempo.
Sin embargo, este método tiene un pequeño defecto, es decir, el nombre de clase en el registro impreso solo puede ser Mylogger o MyLogger2.
2 rutas de configuración dinámica
Si la ruta de registro requerida por el programa debe cambiarse constantemente, y es imposible cambiar el archivo de configuración cada vez, puede usar variables de entorno para resolverlo.
La configuración de log4j es la siguiente:
La copia del código es la siguiente:
log4j.rootlogger = debug, infolog, debuglog
#Info Log
log4j.appender.infolog = org.apache.log4j.dailyrollingfilePeppender
log4j.appender.infolog.file = $ {log.dir}/$ {log.info.file}
log4j.appender.infolog.datepattern = .yyyy-mm-dd
log4j.appender.infolog.threshold = info
log4j.appender.infolog.layout = org.apache.log4j.patternlayout
log4j.appender.infolog.layout.conversionPattern =%d {aaa yyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
# -registro de #Debug
log4j.appender.debuglog = org.apache.log4j.rollingfilePeppers
log4j.appender.debuglog.file = $ {log.dir}/$ {log.debug.file}
log4j.appender.debuglog.threshold = debug
log4j.appender.debuglog.maxfilesize = 128mb
log4j.appender.debuglog.maxbackupindex = 3
log4j.appender.debuglog.layout = org.apache.log4j.patternlayout
log4j.appender.debuglog.layout.conversionPattern =%d {yyyyy-mm-dd hh: mm: ss}%-5p [%t]%c.%m (%l)-%m%n
En este momento, antes de usar el registro para imprimir el registro, debe usar el sistema para definir la ruta de salida y las variables de entorno de nombre de archivo:
La copia del código es la siguiente:
System.setProperty ("log.dir", logDir);
System.SetProperty ("log.info.file", infologFileName);
System.SetProperty ("log.debug.file", debugLogFileName);
Adjunto: el significado de formato del parámetro del patrón
%c El nombre completo de la clase a la que pertenece la información del registro
%D emite la fecha o la hora del punto de registro. : 2013-8-19-22:10:28
%F El nombre de clase de la clase a la que pertenece la información del registro
%l El evento de registro de salida ocurre, es decir, la declaración de que la información del registro de emisión está en la fila de la clase se encuentra
%m ENTREGA La información especificada en el código, como el mensaje en el registro (mensaje)
%n salidas Una ruptura de línea de retorno de carro, la plataforma de Windows es "/r/n" y la plataforma Unix es "/n"
%P Prioridad de salida, es decir, depuración, información, advertencia, error, fatal. Si se emite llamando a debug (), es depug, y así sucesivamente
%R Salida El número de milisegundos tomados desde el inicio de la aplicación para generar la información de registro
%t sale el nombre de subproceso que genera el evento de registro