1 instrucciones de configuración de Log4j
1.1 Archivo de configuración
Log4j se puede configurar dinámicamente a través de un programa java. La desventaja obvia de este método es que si necesita modificar el nivel de salida del registro y otra información, debe modificar el archivo java y luego volver a compilarlo, lo cual es muy problemático;
Log4j también se puede configurar a través de archivos de configuración. Actualmente, admite dos formatos de archivos de configuración:
•archivo xml
•archivo de propiedades (recomendado)
El siguiente es el contenido completo de un archivo de configuración log4j:
Copie el código de código de la siguiente manera:
log4j.rootCategory=INFORMACIÓN, salida estándar
log4j.rootLogger=información, salida estándar
### salida estándar ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### establecer paquete ###
log4j.logger.org.springframework=información
log4j.logger.org.apache.catalina=información
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=información
log4j.logger.chb.test=depurar
1.2 Configurar el registrador raíz
El registrador raíz define principalmente el nivel de registro y el destino de salida admitido por log4j. Su sintaxis es:
log4j.rootLogger = [nivel], appenderName, appenderName,…
Entre ellos, el nivel es la prioridad de registro, que se divide en niveles APAGADO, FATAL, ERROR, ADVERTENCIA, INFORMACIÓN, DEPURACIÓN, TODOS o personalizados.
Se recomienda utilizar solo cuatro niveles. Las prioridades de mayor a menor son ERROR, WARN, INFO y DEBUG.
appenderName especifica dónde se genera la información del registro y se pueden especificar varios destinos de salida al mismo tiempo.
1.3 Configurar el apéndice de destino de salida
Appender define principalmente dónde se genera la información del registro. La sintaxis principal es:
Copie el código de código de la siguiente manera:
log4j.appender.appenderName = información de clase
log4j.appender.appenderName.opción1 = valor1
…
log4j.appender.appenderName.opciónN = valorN
Los apéndices proporcionados por Log4j incluyen lo siguiente:
•org.apache.log4j.ConsoleAppender(consola),
•org.apache.log4j.FileAppender(archivo),
•org.apache.log4j.DailyRollingFileAppender (genera un archivo de registro todos los días),
•org.apache.log4j.RollingFileAppender (genera un nuevo archivo cuando el tamaño del archivo alcanza el tamaño especificado)
•org.apache.log4j.WriterAppender (envía información de registro en formato de transmisión a cualquier lugar especificado)
Tome ConsoleAppender como ejemplo, como por ejemplo:
Copie el código de código de la siguiente manera:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 Configurar el diseño del formato de la información de registro
El diseño es responsable de formatear la salida del Appender. Su sintaxis es:
Copie el código de código de la siguiente manera:
log4j.appender.appenderName.layout = información de clase
log4j.appender.appenderName.layout.option1 = valor1
…
log4j.appender.appenderName.layout.optionN = valorN
Entre ellos, los diseños proporcionados por Log4j incluyen los siguientes:
•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.)
1.5 Establecer el nivel de salida del paquete
Puede configurar el nivel de salida del registro de diferentes paquetes. La sintaxis es:
log4j.logger.packageName=nivel
Entre ellos, packageName es el nombre real del paquete y nivel es el nivel de registro, por ejemplo:
Copie el código de código de la siguiente manera:
log4j.logger.org.springframework=información
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=información
log4j.logger.chb.test=depurar
2 Log4j combinado con J2ee
2.1 Usando arquitectura de primavera
Spring es realmente bueno. Ha hecho muchas cosas por nosotros. Si el sistema usa el marco Spring, es muy simple integrar log4j. Se divide principalmente en 3 pasos, de la siguiente manera:
2.1.1 Definir el archivo de configuración log4j
Copie el código de código de la siguiente manera:
log4j.rootCategory=INFORMACIÓN, salida estándar
log4j.rootLogger=información, salida estándar
### salida estándar ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### iniciar sesión en el archivo ###
log4j.logger.org.springframework=información
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=información
log4j.logger.chb.test=depurar
2.1.2 Definir oyentes
El oyente debe definirse en web.xml, que incluye principalmente: definir el directorio del archivo de configuración log4j y el oyente log4j, de la siguiente manera:
Copie el código de código de la siguiente manera:
<?xml versión="1.0" codificación="UTF-8"?>
<versión de la aplicación web="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--La ubicación del archivo de configuración Log4j cargado por Spring-->
<parámetro-contexto>
<param-name>log4jConfigLocation</param-name>
<valor-param>/WEB-INF/log4j.properties</valor-param>
</context-param>
<parámetro-contexto>
<param-name>contextConfigLocation</param-name>
<valor-parámetro>
/WEB-INF/clases/applicationContext*.xml
</param-valor>
</context-param>
<!--Cargador de configuración Spring log4j-->
<oyente>
<clase-oyente>
org.springframework.web.util.Log4jConfigListener
</escucha-clase>
</escucha>
<oyente>
<clase-oyente>
org.springframework.web.context.ContextLoaderListener
</escucha-clase>
</escucha>
<servlet>
<nombre-servlet>InitiaServlet</nombre-servlet>
<servlet-clase>chb.test.web.InitiaServlet</servlet-clase>
<carga-al-inicio>1</carga-al-inicio>
</servlet>
<lista-de-archivos-de-bienvenida>
<archivo-de-bienvenida>index.jsp</archivo-de-bienvenida>
</lista-de-archivos-de-bienvenida>
</aplicación web>
2.1.3 Clase de prueba
Copie el código de código de la siguiente manera:
paquete com.dheaven.mip.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.Logger;
la clase pública InitiaServlet extiende HttpServlet {
registro de registrador protegido = Logger.getLogger(InitiaServlet.class);
serialVersionUID largo final estático privado = 8550329576989690578L;
/**
* Constructor del objeto.
*/
IniciaServlet público() {
súper();
}
/**
* Destrucción del servlet <br>.
*/
destrucción de vacío público () {
super.destruir();
}
/**
* Inicialización del servlet.
*
* @throws ServletException si ocurre un error
*/
public void init() lanza ServletException {
log.debug("El servidor se inició y log4j comenzó a funcionar");
}
}
2.2 No utilizar la arquitectura Spring
Si el sistema no usa Spring, tomemos el servlet como ejemplo. Es muy simple. Puede seguir los pasos y solo pegar el código, sin tonterías.
2.2.1 Definir el archivo de configuración log4j
Colóquelo en el directorio WEB-INF del proyecto web, con el siguiente contenido:
Copie el código de código de la siguiente manera:
log4j.rootCategory=INFORMACIÓN, salida estándar
log4j.rootLogger=información, salida estándar
### salida estándar ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### establecer paquete ###
log4j.logger.org.apache.catalina=información
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=información
log4j.logger.com.dheaven=depurar
2.2.2 Crear clase de inicialización log4j
Copie el código de código de la siguiente manera:
paquete com.dheaven.mip.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.PropertyConfigurator;
la clase pública InitLog4j extiende HttpServlet {
serialVersionUID largo final estático privado = 1L;
public void init() lanza ServletException {
Prefijo de cadena = getServletContext().getRealPath("/");
prefijo = prefijo.reemplazar("//", "/");
Archivo de cadena = getInitParameter("log4j-init-file");
// si el archivo log4j-init no está configurado, entonces no tiene sentido intentarlo
si (archivo! = nulo) {
PropertyConfigurator.configure(prefijo + archivo);
}
}
}
2.2.3 Definir clase de inicialización en Web.xml
Copie el código de código de la siguiente manera:
<servlet>
<nombre-servlet>log4j-init</nombre-servlet>
<servlet-clase>chb.test.web.InitLog4j</servlet-clase>
<parámetro-inicio>
<param-name>archivo-init-log4j</param-name>
<valor-param>WEB-INF/log4j.properties</valor-param>
</init-param>
<carga-al-inicio>1</carga-al-inicio>
</servlet>
2.2.4 Clase de prueba
Copie el código de código de la siguiente manera:
paquete chb.test.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.Logger;
la clase pública InitiaServlet extiende HttpServlet {
registro de registrador protegido = Logger.getLogger(InitiaServlet.class);
serialVersionUID largo final estático privado = 8550329576989690578L;
/**
* Constructor del objeto.
*/
IniciaServlet público() {
súper();
}
/**
* Destrucción del servlet. <br>
*/
destrucción de vacío público () {
super.destruir();
}
/**
* Inicialización del servlet.
*
* @throws ServletException si ocurre un error
*/
public void init() lanza ServletException {
log.debug("El servidor se inició y log4j comenzó a funcionar");
}
}