1: Introducción a log4j Introducción
LOG4J es un proyecto de código abierto de Apache. El formato de salida de cada registro; Lo más interesante es que se pueden configurar de manera flexible a través de un archivo de configuración sin modificar el código de la aplicación.
Además, a través de log4j otras interfaces de lenguaje, puede usar log4j en C, C ++, .NET, PL/SQL Programas. componente. Además, al usar varias extensiones de terceros, puede integrar fácilmente log4j en aplicaciones J2EE, Jini e incluso SNMP.
2. Ejemplos para principiantes
1. Cree un nuevo proyecto Java, importe el paquete log4j-1.2.17.jar, y el directorio final de todo el proyecto es el siguiente
2. Cree y establezca log4j.Properties en el mismo nivel
### configuración###
log4j.rootlogger = debug, stdout, d, e
### Información de salida para controlar el elevador ####
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stdout.toRget = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionPattern = [%-5p]%d {yyyyy-mm-dd hh: mm: ss, sss} método:%l%n%m%n
### Registros de salida anteriores al nivel de depuración a = e: //logs/error.log ###
log4j.appender.d = org.apache.log4j.dailyrollingfilePeppender
log4j.appender.d.file = e: //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionPattern = %-d {yyyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
### Registra de salida por encima del nivel de error a = e: //logs/error.log ###
log4j.appender.e = org.apache.log4j.dailyrollingfilePeppender
log4j.appender.e.file = e: //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = error
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionPattern = %-d {yyyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
3. Establecer contenido de registro
paquete com.mucfc; import org.apache.log4j.logger;/** *@autor linbingwen *@18 de mayo de 2015 9:14:21 */prueba de clase pública {private static logg er = logger.getLogger (test. clase); :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::: "Este es un mensaje de depuración"); Mensaje de información. "); // Registro de información de nivel de error Logger.error (" Este es un mensaje de error ");}}4. Resultado de salida
(1) En primer lugar, la información de la consola
(2) Veamos el archivo de salida
El contenido es el siguiente, y se encuentra que se ha producido al documento correspondiente según sea necesario.
3. Método de uso básico de log4j
LOG4J consta de tres componentes importantes: la prioridad de la información de registro, el destino de salida de la información del registro y el formato de salida de la información de registro. La prioridad de la información de registro es de alta a baja. archivo;
2.1.
De hecho, tampoco puede usar archivos de configuración en absoluto, pero configure el entorno LOG4J en su código. Sin embargo, el uso de archivos de configuración hará que su aplicación sea más flexible. LOG4J admite dos formatos de archivo de configuración, uno es un archivo de formato XML y el otro es un archivo de características Java (clave = valor). A continuación presentamos el método de usar archivos de características Java como archivos de configuración:
1. Configure el registrador raíz, su sintaxis es:
log4j.rootlogger = [nivel], appendername, appendername, ...
Entre ellos, el nivel es la prioridad del registro, dividido en OFF, FATAL, ERROR, WARN, INFO, DEBUGA, todo o el nivel que define. 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. Appendern Name se refiere a donde se genera la información del registro B. Puede especificar múltiples destinos de salida al mismo tiempo.
2. Configure el apaudador de destino para generar la información del registro, y su sintaxis es:
log4j.appender.appendername = totalmente.qualified.name.of.appender.class
log4j.appender.appendername.option1 = valor1
…
log4j.appender.appendername.option = Valuen
Entre ellos, los apéndices proporcionados por LOG4J son los siguientes:
org.apache.log4j.consoleppender (consola),
org.apache.log4j.FileAppender (archivo),
org.apache.log4j.DailyRollingFileAppender (genera un archivo de registro todos los días),
org.apache.log4j.rollingFileAppender (se genera un nuevo archivo cuando el tamaño del archivo alcanza el tamaño especificado),
org.apache.log4j.WriterAppender (envíe información de registro en formato de flujo a cualquier lugar especificado)
3. Configure el formato (diseño) de la información de registro, y su sintaxis es:
log4j.appender.appendername.layout = totalmente.qualified.name.of.layout.class
log4j.appender.appendername.layout.option1 = valor1
…
log4j.appender.appendername.layout.option = Valuen
Entre ellos, hay varios diseños proporcionados por LOG4J:
org.apache.log4j.htmllayout (diseño en forma de tabla html),
org.apache.log4j.PatternLayout (el modo de diseño se puede especificar 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 (incluido el tiempo, el hilo, la categoría, etc. de la generación de registros)
LOG4J utiliza un formato de impresión similar a la función printf en el idioma C para formatear la información del registro, y los parámetros de impresión son los siguientes: %m El mensaje especificado en el código de salida
%P Prioridad de salida, es decir, depuración, información, advertencia, error, fatal
%R Salida El número de milisegundos tomados desde el inicio de la aplicación para generar la información de registro
%C emite la categoría, generalmente el nombre completo de la clase en la que se encuentra
%t sale el nombre del subproceso que genera el evento de registro
%n salidas Una ruptura de línea de retorno de carro, la plataforma de Windows es "RN", la plataforma Unix es "n"
%d emite la fecha o la hora del punto de registro. : 18 de octubre de 2002 22:10:28, 921
%l Salida La ubicación donde ocurre el evento de registro, incluido el nombre de la clase, el hilo que ocurrió y el número de líneas en el código. Ejemplo: TestLog4.Main (TestLog4.Java:10)
2.2.
1. Obtenga la grabadora
Usando log4j, el primer paso es obtener el registrador de registros, que será responsable de controlar la información de registro. La sintaxis es:
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 ())
2. Lea el archivo de configuración
Después de obtener el registrador, el segundo paso configurará el entorno log4j, con la sintaxis como:
BasicConfigurator.configure (): Utilice automáticamente y rápidamente el entorno LOG4J predeterminado.
PropertyConfigurator.Configure (String configFileName): lea 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.
3. Insertar información de registro (información de registro de formato)
Cuando se completan los dos pasos necesarios anteriores, puede insertar fácilmente las declaraciones de registro de diferentes niveles de prioridad en cualquier lugar que desee registrarse.
Logger.debug (mensaje de objeto);
Logger.info (mensaje de objeto);
Logger.warn (mensaje de objeto);
Logger.error (mensaje de objeto);
2.3.
Cada registrador está sujeto a un nivel de registro (nivel de registro) para controlar la salida de la información de registro. Los niveles de registro se dividen en:
R: Off, el nivel más alto se usa para cerrar todo el registro.
B: Fatal indica que cada evento de error crítico hará que la aplicación salga.
C: El error indica que, aunque ocurre un evento de error, todavía no afecta la operación continua del sistema.
D: El cálido indica que habrá posibles situaciones de error.
E: Información en general y en el nivel de grano grueso, enfatiza todo el funcionamiento de la aplicación.
F: La depuración generalmente se usa en el nivel de grano fino y es muy útil para las aplicaciones de depuración.
G: Todo nivel mínimo, utilizado para abrir todo el registro.
Los niveles anteriores se definen en la clase org.apache.log4j.level. LOG4J solo recomienda usar 4 niveles, con prioridad de alto a bajo, error, advertencia, información y depuración. Al usar el nivel de registro, puede controlar la salida de la información de registro en el nivel correspondiente en la aplicación. Por ejemplo, si se usa B, no se imprimirá toda la información de registro debajo del nivel de información (como la depuración) en la aplicación.
4. Use instancias log4j en proyectos web
El código anterior describe la aplicación simple de log4j y, de hecho, usar log4j es tan simple y conveniente. Por supuesto, además del método de configuración anterior, hay otras cosas, como hacer una aplicación J2EE. en web.xml.
1. El uso LOG4J de aplicaciones web utiliza básicamente: Crear un nuevo servlet, que ejecuta la configuración para log4j en la función init. En general, es leer el archivo de configuración. Por lo tanto, debe configurar este servlet en Web.xml y establecer la carga de carga en 1.
2. Esta configuración de servlet log4j es leer el archivo de configuración y luego llamar a la función de configuración. Hay dos preguntas aquí: 1. Necesita saber dónde está el archivo;
3. La ubicación del archivo de configuración se puede configurar en Web.xml.
4. Generalmente hay dos tipos de tipos de archivos, uno es el archivo de propiedad Java y el otro es el archivo XML
El contenido general del archivo de configuración: LOG4J puede especificar el nivel mínimo del nivel de registro de salida, así como el formato de configuración de salida del registro.
(1) Crear un proyecto web, el directorio final de todo el proyecto es el siguiente
(2) La configuración web.xml es la siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http: // java .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <lision-name> loglearning </siplip-name> <servlet> <ervlet-name> log4jtestservlet </servlet-name> <servlet-cl ass> com.mucfc . </servlet-class> <init-param> <amamname> log4j-properties-location </amamname> <amarr-value> /web-inf/classes/log4j.properties </param-value> <// init -Param> <ar carga-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <ervlet-name> log4jtestservlet </servlet-name> <url-pattern>/test </test </test </test </test </ url -pattern> </servlet mapping> </beb-app>
(3) Archivo de configuración log4j.properties
### Establecer niveles de registro ###
log4j.rootlogger = debug, stdout, d, e
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stdout.toRget = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionPattern = [%-5p]%d {yyyyy-mm-dd hh: mm: ss, sss} método:%l%n%m%n
log4j.appender.d = org.apache.log4j.dailyrollingfilePeppender
log4j.appender.d.file = f: //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionPattern = %-d {yyyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
log4j.appender.e = org.apache.log4j.dailyrollingfilePeppender
log4j.appender.e.file = f: //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = error
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionPattern = %-d {yyyyy-mm-dd hh: mm: ss} [ %t: %r]-[ %p] %m %n
(4) El servlet se inicializó tan pronto como llegue el contenedor web
Log4jinitservlet.javapackage com.mucfc; ; * Servlet Clase de implementación Log4JinitServlet */ @WebServlet ("/ log4jinitservlet") clase pública log4jinitservlet extiende httpservlet {private static final l long s eraalversionUid = 1l; ; "); String log4jlocation = config.getInitParameter (" log4j-properties----Boinsation "); servletContext sc = config.getServletContext (); if (log4jlocation == nul l) {system.err.println (" *** no log4j-- Archivo de inicialización de la ubicación de propiedades, así que use BasicConfigurator para inicializar "); BasicConfigurator.Configure ();} else {String WebAppPath = sc.getRealPath ("/"); String log4JProp = webAppPath + l og4jlocation; file yomamayesthissayyomama = log4jpropp ); ** " + LOG4JPROP +" El archivo no se encontró, así se inicializó con BasicConfigurator "); BasicConfigurator.Configure ();}} super.init (config);} /*** @see httpservlet#doget (httpservletRequest solicitud Est,, HttpServletResponse response) */ protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServle t#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void dOPOST (solicitud de httpservletRequest, respuesta httpservletResponse) throw s servletException, ioexception {// toDO method de método generado automático}}Llame a log4jtestservlet, java
paquete com.mucfc; http .httpservletRequest; SerialversionUid = 1L; * * * @see Servlet#init (servletConfig) */ public void init (servletConfig config) lanza ServletException {// TODO Auto Generated Method Stub}/ ** * @ Consulte httpservlet#doget (httpservletRequest Solicitud, respuesta httpServletResponse) *////////////////////////////////////////// Solicitud de doget void protegida (HttpServletRequest, httpservletreSponse Respuesta) lanza ServletException, IOException {// Registro de información de nivel de depuración Logger.debug ("Esto es de depuración. Mensaje. "); // Información de nivel de error de registro Logger Respuesta httpservletResponse) lanza ServletException, ioException {doget (solicitud, respuesta);Lo siguiente es correr, veamos los resultados:
Resultado de salida:
5. Use log4j en primavera
Aquí necesitamos implementar el uso de la primavera en los proyectos web para usar log4j
(1) Conéctese al proyecto anterior y luego importe el paquete de resorte
(2) Web.xml agregado
<!-Establecer directorio raíz-> <text-param> <amamname> WebApprootkey </param-name> <amam-value> webapp.root </param-value> </context-param> <context- Param> <amamname> log4jconfiglocation </param-name> <amam-value> /web-inf/classes/log4j.properties </param-value> </texting-param> <!-3000 significa una apertura de vigilancia de la apertura El hilo escanea el archivo de configuración cambia cada 60 segundos; > </context-param> <Oyerer> <Oyerer-class> org.springframework.web.util.log4jconfiglistener </oyer-class> </oyente>
Todo el contenido es el siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http: // java .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <lision-name> loglearning </siplip-name> <servlet> <ervlet-name> log4jtestservlet </servlet-name> <servlet-cl ass> com.mucfc . mucfc.log4jinitservlet </servlet-class> <init-param> <amamname> log4j-properties-location </amamname> <param-value> /webinf/classes/log4j.p rOperties </param- Valor> </init-param> <load-on-startup> 1 </load-on-startup> </servlet>-> <servlet-mapping> <ervlet-name> log4jtestservlet </servlet-name> <url -Patrón>/Test </url-Pattern> </servlet-mapping> <!-Carga de contenedor de primavera-> <Oyeer> <Oyerer-class> org.springframework.web.context.contextloaderListener </list ener-class > </oyente> <context-param> <amamname> contextConfiglocation </amamname> <amam-value> classpath: applicationContext.xml </amam-value> </context-par am> <!-set Directorio root--> <context-param> <amamname> WebApprootkey </param-name> <amam-value> webapp.root </amam-value> </text-param> <context-param> <param- Nombre> log4jconfiglocation </amamname> <param-value> /web-inf/classes/log4j.properties </param-value> </text-param> <!-3000 significa abrir un hilo de vigilancia para escanear la configuración Archivo cada 60 segundos cambia; Param> <Oyerer> <Oyerer-class> org.springframework.web.util.log4jconfiglistener </ oyeyer-class> </oyente> </seb-app>
Aquí log4jinitservlet.java es equivalente a ser inútil.
(2) ApplicationContext.xml
Sin contenido:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.orgg /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context "xmlns: aop =" http://www.springframework.org/sche ma/aop "xsi: schemalatation = "" http://www.springframework.org/schema/Beansshttp://www.springframework.org/schema/Beans/spring-Beans-3.2.2sdhtttp://www.springfrfrframwork.org/Schema/aophttp: // wwwwwwwwwwwwwww . "> </frijoles>
(3) De esta manera, el registro se iniciará con la ventana de resorte
Una vez que se ejecute el programa, el registro se imprimirá automáticamente
log.log
Error.log está vacío porque solo imprime información por encima del nivel de error
Ingrese http: // localhost: 8080/loglearning2/prueba por el navegador
Luego abra el archivo
El tutorial detallado sobre Java log4j está aquí.