1. Descripción general
1.1 Antecedentes
El registro es muy importante en nuestro desarrollo diario. Agregar registro en aplicaciones generalmente se basa en tres propósitos: monitorear los cambios en las variables en el código, registrándolos periódicamente en archivos para el análisis estadístico por otras aplicaciones; rastrear la trayectoria de tiempo de ejecución del código como base para futuras auditorías; Actuando como depurador en el entorno de desarrollo integrado, imprimiendo la información de depuración del código en el archivo o consola.
1.2 Introducción
Log4j (log para Java) es un proyecto de código abierto de Apache, que proporciona una forma delicada de administrar registros. A través de un archivo de configuración, podemos controlar el formato de salida y el destino de cada registro con múltiples opciones. Al definir el nivel de información, también podemos cambiar de manera flexible la información de retroalimentación en el código. En pocas palabras, LOG4J es una biblioteca API que ayuda a los desarrolladores a administrar la salida del registro. Su característica más importante es que el archivo de configuración puede establecer de manera flexible la prioridad de la información del registro, el destino de salida de la información del registro y el formato de salida de la información de registro.
2. Configuración de Log4J
Diagrama de clase 2.1Log4J
2.2 Definición del archivo de configuración
LOG4J se puede establecer dinámicamente a través de programas Java. La desventaja obvia de este método es: si necesita modificar el nivel de salida del registro y otra información, debe modificar el archivo Java y luego recompilarlo, lo cual es muy problemático.
El uso de archivos de configuración hará que nuestra aplicación sea más flexible para configurar registros, y los métodos de salida de registro incluyen prioridad de salida, destino de salida y formato de salida. LOG4J admite dos formatos de archivo de configuración, uno es un archivo XML y el otro es un archivo de características Java log4j.properties (key = valor).
2.3 Archivo de configuración log4j.properties
Cuando se convoca a Log4J por primera vez, LOG4J ubicará el archivo en el classpath (../web-inf/class/, por supuesto, siempre que el directorio esté incluido en el classpath) y lea la configuración completa del archivo. Este archivo de configuración le dice a LOG4J qué formato, qué información producir a dónde está. En consecuencia, necesitamos configurar tres aspectos:
1. Directorio raíz (nivel y destino);
2. Destino (consola, archivo, etc.);
3. Estilo de salida (cómo mostrar contenido de registro)
Los ejemplos son los siguientes:
#Nivel de salida del registro del conjunto
log4j.rootlogger = debug, appender1
#Output para consolar
log4j.appender.appender1 = org.apache.log4j.consoleppender
#Style es ttcclayout
log4j.appender.appender1.layout = org.apache.log4j.ttcclayout
2.4. Log4j Tres componentes Descripción
LOG4J tiene tres componentes principales: registradores, apéndice (fuente de salida) y diseño (diseño). La combinación de estos tres componentes permite un registro fácil del tipo y nivel de información, y puede controlar el estilo y la ubicación de la salida del registro en tiempo de ejecución. Los siguientes son los tres componentes:
2.4.1 Logger Logger
El objeto Logger se utiliza para reemplazar System.out o System.err Log Writer, que se utiliza para proporcionar a los programadores la salida de información de registro.
El registrador raíz está configurado con la sintaxis:
log4j.rootlogger = [nivel], appendername, appendername, ...
Entre ellos, el nivel es la prioridad del registro, dividido en OFF, FATAL, ERROR, WARN, INFO, DEBUGA, TODOS LOS OLBARES O Custom. LOG4J recomienda usar solo cuatro niveles, con prioridad de error alto a bajo, a saber, advertencia, información y depuración. Por el nivel definido aquí, puede controlar los conmutadores al nivel correspondiente de información de registro en la aplicación. Por ejemplo, si el nivel de información se define aquí, no se imprimirá toda la información del registro de nivel de depuración en la aplicación. Appendername especifica a dónde se produce la información de registro. Se pueden especificar múltiples destinos de salida simultáneamente.
2.4.2 APRENDIZACIÓN DE Destino de salida
El sistema de registro log4j permite la salida del registro a diferentes lugares, como la consola (consola), los archivos (archivos), los nuevos archivos se generan según los días o el tamaño del archivo, y se envían a otros lugares en forma de transmisiones, etc.
Configurar Appender, su sintaxis se expresa como:
log4j.appender.appendername = totalmente.qualified.name.of.appender.classlog4j.appender.appendername.option1 = valor1 ... log4j.appender.appendername.option = valuen
"Totalmente.qualified.name.of.appender.class" puede especificar uno de los siguientes cinco destinos:
1) .org.apache.log4j.consoleppender (consola)
2) .org.apache.log4j.fileepeppender (archivo)
3) .org.apache.log4j.DailyRollingFilePeppender (genere un archivo de registro todos los días)
4) .org.apache.log4j.RollingFileAppender (se genera un nuevo archivo cuando el tamaño del archivo alcanza el tamaño especificado)
5) .org.apache.log4j.WriterAppender (envíe información de registro en formato de flujo a cualquier lugar especificado)
(1).
(2). Opciones de Fileappender
(3).
Es decir, el formato correspondiente es el siguiente:
1) '.' Yyyy-MM: Monthly
2) '.' Yyyy-WW: semanal
3) '.' Yyyy-MM-DD: todos los días
4) '.' Yyyy-MM-DD-A: dos veces al día
5) '.' Aaa-mm-dd-hh: por hora
6) '.' Aaa yyyy-mm-dd-hh-mm: por minuto
4. Opciones de FilEappender
2.4.3 Formato (diseño) Diseño
A veces quiero formatear mi propia salida de registro de acuerdo con mis preferencias. LOG4J puede adjuntar un diseño detrás del apéndice para completar esta función.
Configurar el diseño, su sintaxis se expresa como:
log4j.appender.appendername.layout = totalmente.qualified.name.of.layout.classlog4j.appender.appendername.layout.option1 = valor1 ... log4j.appender.appendername.layout.option = valuen
El diseño proporciona cuatro estilos de salida de registro, como sigue:
(1) .org.apache.log4j.htmllayout (diseño en forma de tabla HTML),
(2) .org.apache.log4j.PatternLayout (el modo de diseño se puede especificar de manera flexible),
(3) .org.apache.log4j.simplelayout (contiene el nivel y la cadena de información de la información del registro),
(4) .org.apache.log4j.ttcclayout (incluido el tiempo de generación de registros, hilo, categoría, etc. Información)
Opciones de htmllayout
UbicationInfo = true: el valor predeterminado es falso, emite el nombre del archivo Java y el número de línea
Title = mi archivo de aplicación: el valor predeterminado es los mensajes de registro log4j.
2. Opciones de PatternLayout
ConversionPattern =%M%N: Especifica cómo formatear el mensaje especificado.
Lo que debe explicarse aquí es el significado de varios símbolos en el formato de información de registro:
Se pueden agregar modificadores entre el % y los caracteres de patrón para controlar su ancho mínimo, el máximo ancho y la alineación del texto. como:
1)%20C: Especifique el nombre de la categoría de salida, el ancho mínimo es 20. Si el nombre de la categoría es inferior a 20, está alineado correctamente de forma predeterminada.
2)%-20c: Especifica el nombre de la categoría de salida, el ancho mínimo es 20. Si el nombre de la categoría es inferior a 20, el signo "-" especifica la alineación de la izquierda.
3)%. 30c: Especifique el nombre de la categoría de salida. El ancho máximo es 30. Si el nombre de la categoría es mayor que 30, los caracteres adicionales de la izquierda se cortarán, pero si tienen menos de 30, no habrá espacios.
4)%20.30c: si el nombre de la categoría es inferior a 20, complete el espacio y alinelo correctamente. Si su nombre es de más de 30 caracteres, corte los caracteres adicionales de la izquierda.
2.5.log4j Ejemplo de configuración
La simplicidad de la configuración de LOG4J lo hace extender a través de más y más aplicaciones: los archivos de configuración log4j implementan un conjunto completo de funciones como la salida a la consola, archivos, archivos de reversión, envío de correo de registro, salida a tablas de registro de bases de datos y etiquetas personalizadas.
log4j.rootlogger = debug, console, a1, im log4j.addivity.org.apache = true
n aplicar a la consola
log4j.appender.console = org.apache.log4j.consoleppenderlog4j.appender.threshold = debug log4j.appender.console.target = system.outlog4j.appender.console.layout = org.apache.log4j.patternlayOutOut log4j.appender.console.layout.conversionPattern =%d-%c-%-4r [%t]%-5p%c%x-%m%n
n Aplicar a los archivos
log4j.appender.file = org.apache.log4j.fileAppenderlog4j.appender.file.file = file.loglog4j.appender.file.append = falselog4j.appender.file.layout = org.apache.log4j.patternlaylog4j.appender.file.laayout - % -4r [ %t] %-5p %c %x - %m %n
n aplicar a la reversión del archivo
log4j.appender.rolling_file = org.apache.log4j.rollingFileApepSlog4j.appender.rolling_file.threshold = errorLog4j.appender.rolling_file.file = rolling.loglog4j.appender.rolling_file.append = truelog4j.append.append = troling = trein ender.rolling_file.maxfilesize = 10kblog4j.appender.rolling_file.maxbackupIndex = 1log4j.appender.rolling_file.layout = org.apache.log4j.patternlayoutlog4j.appender.rolling_file.layout.conversionpatn %c %x - %m %n
n Aplicar al socket
log4j.appender.socket = org.apache.log4j.rollingFileAppenderlog4j.appender.socket.remotehost = localhost log4j.appender.socket.port = 5001log4j.appender.socket.locationInfo = true = true. log4j.appender.socket.layout = org.apache.log4j.patternlayoutlog4j.appender.socet.layout.conversionPattern = [start]%d {fecha} [fecha]%n%p [prioridad]%n%x [ndc]%n%t [hilo]%n%c [categoría]%n%m [mensaje]%n%n## log log4j.appender.lf5_appender = org.apache.log4j.lf5.lf5appender log4j.appender.lf5_appender.maxnumberofrecords = 2000n Enviar registros al correo electrónico
log4j.appender.mail = org.apache.log4j.net.smtpappenderlog4j.appender.mail.threshold = fatallog4j.appender.mail.buffersize = 10log4j.appender.mail.from=web@www.wuset.comlog4j.appender.mail.smtphost=www.wusetu.comlog4j.appender.mail.subject=log4j Mensaje log4j.appender.mail.to=web@www.wusetu.comlog4j.appender.mail.layout=org.apache.log4j.patternlayout log4j.appender.mail.layout.ConversionPattern =%d-%c-%-4R [%t]%-5p%c%x-%m%n n n n n n n n n n n n n n n n n n n n n n n n n n n
n para base de datos
log4j.appender.database = org.apache.log4j.jdbc.jdbcappenderlog4j.appender.database.url = jdbc: mysql: // localhost: 3306/testlog4j.appender.database.driver = com.mysql.jdbc.driver log4j.appender.database.user = roadlog4j.appender.database.password = log4j.appender.database.sql = inserte en valores log4j (mensaje) (' %d - %c - % -4r [ %t] %-5p %c %x - %m%n ') log4j.appender.database.layout = org.apache.log4j.patternlayout log4j.appender.database.layout.conversionPattern =%d-%c-%-4r [%t]%-5p%c%x-%m%nlog4j.apender.a1 = org.apache.log4J log4j.appender.a1.file = samplemessages.log4j log4j.appender.a1.datepattern = yyyymmdd-hh'.log4j'log4j.appender.a1.layout = org.apache.log4j.xml.xmlLayoutn apaudamiento personalizado
log4j.appender.im = net.cybercorlin.util.logger.appender.imappenderlog4j.appender.im.host = mail.cybercorlin.net log4j.appender.im.username = username log4j.appender.im.password = contraseña log4j.appender.im.recipient = [email protected]=org.apache.log4j.patternlayoutlog4j.appender.im.layout.conversionpattern = [marco] %d - %c - % -4r [ %t] %-5p %c %x - %m %n
3. Configurar log4j para la primavera en la aplicación web
Primero, debe agregar la siguiente declaración de configuración al archivo web.xml:
< <Param-Value> /web-inf/classes/config/log4j/log4j.properties </param-value> </ contextparam> <!-Establezca el intervalo de tiempo para refrescar el archivo de configuración de registro, configurado en 60s aquí-> <context-param> <amarr-name> log4jrefresfresffresffresffheshrfheshrfheshrfheshrefheshin <Amam-Value> 60000 </amam-value> </text-param> <!-Cargue el oyente log4j en el marco de Spring Log4jconfigListener-> <Oyeer> <searner-class> org.springframework.web.util.log4jconfiglistener </oyente-classs> </ oyente>
Se recomienda establecer el valor de la propiedad log4jconfiglocation en: /web-inf/classes/log4j.properties, de modo que cuando hacemos algunas pruebas, podamos registrar correctamente la información de registro cuando no iniciamos la aplicación web. LOG4JConfigListener es una clase de herramientas proporcionada por Spring. Abre un hilo de monitoreo LOG4J y detecta cambios en la configuración de registro cada 60 segundos (Log4JrefreshInterval Variable Definition), por lo que no es necesario reiniciar el servicio web cada vez para aplicar la nueva configuración. En TomCat, no se separan las propiedades del sistema en función de las aplicaciones web. Por lo tanto, se debe definir un "Approootkey" único para cada aplicación web, y lo llamamos WebApp.root. Después de comenzar el entorno, LOG4JConfigListener inyectará el valor en la variable WebApp.root.
4. Use log4j en el código
4.1. Obtenga la grabadora
Usando log4j, el primer paso es obtener una grabadora de registro, que será responsable de controlar la información de registro.
Public Static Logger GetLogger (nombre de cadena)
Obtenga el registrador por nombre especificado y, si es necesario, cree un nuevo registrador para el nombre. El nombre generalmente se nombra en esta clase, como:
static logger logger = logger.getLogger (serverwithlog4j.class.getName ())
4.2. Lea el archivo de configuración
Después de obtener el registrador, el segundo paso configurará el entorno log4j, con la sintaxis como:
Si coloca log4j.properties en el directorio raíz del proyecto, tampoco puede escribir esta oración, y el programa encontrará automáticamente el archivo de configuración.
BasicConfigurator.configure (): Utilice automáticamente y rápidamente el entorno LOG4J predeterminado. PropertyConfigurator.Configure (String configFileName): lee archivos de configuración escritos con los archivos de características de Java.
Domconfigurator.configure (nombre de archivo de cadena): lea archivos de configuración en formulario XML.
LOG4J se inicializa utilizando los 3 configuradores anteriores, y el uso de PropertyConfigurator es adecuado para todos los sistemas. La siguiente declaración.
PropertyConfigurator.Configure ("Log4j.Properties");Para el proyecto General Java, LOG4J se puede inicializar sin usar la instrucción anterior. LOG4J encontrará automáticamente el archivo de configuración en classPath e inicializará. Si LOG4J no puede inicializar automáticamente el archivo de configuración, entonces el método anterior debe inicializarse.
Nota: Al inicializar el archivo de configuración, es mejor ejecutarlo solo una vez cuando el sistema comience. Si lo ejecuta varias veces, uno es un desperdicio de recursos, y el otro es que para la versión anterior de LOG4J, pueden ocurrir problemas al usar DailyRollingFileAppender.
4.3. Insertar información de registro (información de registro de formato)
Cuando se completen los dos pasos necesarios anteriores, puede insertar fácilmente las declaraciones de registro de diferentes niveles de prioridad en cualquier lugar que desee registrar. La sintaxis es la siguiente:
Logger.debug (mensaje de objeto);