¿Cómo cambia el nivel de registro de un paquete usando Log4j?

5 minutos de lectura

avatar de usuario
ryan elkins

Me he encontrado con el siguiente error:

http://issues.apache.org/jira/browse/AXIS2-4363

Dice lo siguiente:

Este error solo ocurre cuando el nivel de registro para org.apache.axiom es DEPURAR, por lo que una solución consiste en establecer el nivel de registro > DEPURAR.

Mi pregunta es ¿CÓMO hago para hacer eso? He estado recorriendo mis directorios en busca de un archivo de propiedades o algo y he estado buscando para ver si hay algo que pueda establecer en el código, pero realmente no tengo idea de lo que estoy haciendo. Estoy ejecutando una aplicación de consola en mi escritorio en este momento mientras trato de hacer que esto funcione.

Actualización 1: noté que mi directorio Axis2 tiene su propio archivo log4j.properties en su raíz. ¿Se ignora esto con seguridad o es parte de la solución (o parte del problema)?

Actualización 2: el archivo log4j.properties de nivel raíz aparentemente no está configurado correctamente. Ahora mismo se ve así:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

pero eso aparentemente es incorrecto ya que este código devuelve “El nivel de registro es nulo”:

System.out.println("Log level is " + logger.getLevel());

Por ahora estoy configurando el nivel de registro en el código usando

Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);

  • Todavía tengo problemas con esto: agregué un archivo log4j.properties a la raíz de la aplicación de la consola, pero ninguno de los log4j.rootLogger=WARN, R o log4j.logger.org.apache.axiom=WARN parecen hacer nada. obtener el mismo error que antes.

    –Ryan Elkins

    13 de noviembre de 2009 a las 19:29

¿Qué servidor de aplicaciones estás usando? Cada uno coloca su configuración de registro en un lugar diferente, aunque la mayoría hoy en día usa Commons-Logging como un envoltorio alrededor de Log4J o java.util.logging.

Usando Tomcat como ejemplo, este documento explica sus opciones para configurar el registro usando cualquiera de las opciones. En cualquier caso, debe buscar o crear un archivo de configuración que defina el nivel de registro para cada paquete y cada lugar en el que el sistema de registro generará información de registro (generalmente consola, archivo o base de datos).

En el caso de log4j, este sería el archivo log4j.properties, y si sigue las instrucciones en el enlace de arriba, su archivo comenzará a parecerse a:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Lo más simple sería cambiar la línea:

log4j.rootLogger=DEBUG, R

A algo como:

log4j.rootLogger=WARN, R

Pero si aún desea su propia salida de nivel DEBUG de sus propias clases, agregue una línea que diga:

log4j.category.com.mypackage=DEBUG

leyendo un poco sobre Log4J y Commons-Logging te ayudará a entender todo esto.

  • En este momento solo estoy tratando de ejecutar un código como una aplicación de consola. Veré si puedo averiguar dónde debe ir el archivo log4j.properties. Gracias.

    –Ryan Elkins

    12 de noviembre de 2009 a las 23:34

  • la categoría está en desuso en log4j con registrador

    – Señor Lou

    7 de abril de 2012 a las 9:17

  • Como nota importante de log4j docs: “Esta observación nos había llevado previamente a elegir la categoría como el concepto central del paquete. Sin embargo, desde la versión 1.2 de log4j, la clase Logger ha reemplazado a la clase Category. Para aquellos familiarizados con versiones anteriores de log4j, la clase Logger se puede considerar como un mero alias de la clase Category”.

    – keaplogik

    13 de marzo de 2013 a las 18:51

Encontré exactamente el mismo problema hoy, Ryan.

En mi origen (o su directorio raíz), mi log4j.propiedades archivo ahora tiene la siguiente adición

# https://issues.apache.org/jira/browse/AXIS2-4363
log4j.category.org.apache.axiom=WARN

Gracias por los avisos sobre cómo hacer esto, Benjamin.

Este trabajo para mi:

log4j.logger.org.hibernate.type=trace

También puede probar:

log4j.category.org.hibernate.type=trace

avatar de usuario
kaza

Acabo de encontrar el problema y no pude entender qué estaba mal, incluso después de leer todo lo anterior y todo lo que hay. lo que hice fue

  1. Establezca el nivel del registrador raíz en WARN
  2. Establecer el nivel de registro del paquete en DEBUG

Cada implementación de registro tiene su propia forma de configurarlo a través de propiedades o mediante código (mucha ayuda disponible en esto)

Independientemente de todo lo anterior, no obtendría los registros en mi consola ni en mi archivo de registro. Lo que había pasado por alto era el siguiente…


ingrese la descripción de la imagen aquí


Todo lo que estaba haciendo con el malabarismo anterior era controlar solo la producción de los registros (en la raíz/paquete/clase, etc.), a la izquierda de la línea roja en la imagen de arriba. Pero no estaba cambiando la forma de visualización/consumo de los registros del mismo, a la derecha de la línea roja en la imagen de arriba. El controlador (consumo) generalmente está predeterminado en INFO, por lo tanto, sus valiosas declaraciones de depuración no se cumplirán. El consumo/la visualización se controla configurando los niveles de registro para los Controladores (ConsoleHandler/FileHandler, etc.). Así que seguí adelante y configuré los niveles de registro de todos mis controladores al máximo y todo funcionó.

Este punto no fue aclarado de manera precisa en ningún lugar.

Espero que alguien que se esté rascando la cabeza, pensando por qué las propiedades no funcionan, encuentre esto útil.

establezca la propiedad del sistema log4j.debug=true. Luego puede determinar dónde su configuración se está volviendo loca.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad