logs - logger log4j java
¿Cómo se puede cambiar el nivel de registro de un paquete con Log4j? (5)
He encontrado el siguiente error:
http://issues.apache.org/jira/browse/AXIS2-4363
Declara lo siguiente:
Este error solo se produce cuando el nivel de registro para org.apache.axiom es DEBUG, por lo que una solución alternativa es establecer el nivel de registro> DEPURAR.
Mi pregunta es ¿CÓMO hago eso? He estado buscando en mis directorios un archivo de propiedades o algo así y he estado buscando si había algo que pudiera 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. ¿Esto se ignora con seguridad o es parte de la solución (o parte del problema)?
Actualización 2: el archivo de nivel raíz log4j.properties no está configurado correctamente. En este momento 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 es aparentemente 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 código usando
Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);
¿Qué servidor de aplicaciones estás usando? Cada uno pone su configuración de registro en un lugar diferente, aunque la mayoría usa hoy en día Commons-Logging como un contenedor 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, necesita encontrar 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 db).
En el caso de log4j este sería el archivo log4j.properties, y si sigues las instrucciones en el enlace de arriba, tu archivo comenzará con el siguiente aspecto:
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
Para algo como:
log4j.rootLogger=WARN, R
Pero si aún desea obtener su propio nivel de DEPURACIÓN de sus propias clases, agregue una línea que diga:
log4j.category.com.mypackage=DEBUG
Leer un poco sobre Log4J y Commons-Logging te ayudará a entender todo esto.
Este trabajo para mi:
log4j.logger.org.hibernate.type=trace
También puede intentar:
log4j.category.org.hibernate.type=trace
Hoy encontré exactamente el mismo problema, Ryan.
En mi directorio src (o su raíz), mi archivo log4j.properties ahora tiene la siguiente adición
# https://issues.apache.org/jira/browse/AXIS2-4363
log4j.category.org.apache.axiom=WARN
Gracias por la información sobre cómo hacer esto, Benjamin.
Me acabo de encontrar con el problema y no pude entender qué estaba pasando mal incluso después de leer todo lo anterior y todo lo que hay por ahí. Lo que hice fue
- Establecer nivel de registrador de raíz a WARN
- Establezca el nivel de registro del paquete en DEPURAR
Cada implementación de registro tiene su propia forma de configurarlo a través de propiedades o mediante código (mucha ayuda disponible sobre esto)
Independientemente de todo lo anterior, no obtendría los registros en mi consola o mi archivo de registro. Lo que había pasado por alto era el siguiente ...
Todo lo que estaba haciendo con el malabarismo anterior era controlar solo la producción de los registros (en root / paquete / clase, etc.), a la izquierda de la línea roja en la imagen de arriba. Pero no estaba cambiando la forma en que se muestran / consumen los registros de la misma, a la derecha de la línea roja en la imagen de arriba. Handler (Consumo) generalmente está predeterminado en INFO, por lo tanto, sus valiosas sentencias de depuración no aparecerán. El consumo / visualización se controla estableciendo los niveles de registro para los controladores (ConsoleHandler / FileHandler, etc.). Así que seguí adelante y configuré los niveles de registro de todos mis controladores en el mejor y todo funcionó.
Este punto no fue aclarado de manera precisa en ningún lugar.
Espero que alguien se rasque la cabeza y piense por qué las propiedades no funcionan. Esto le resultará útil.
establecer la propiedad del sistema log4j.debug = true. Luego puede determinar dónde se está ejecutando su configuración de forma amuck.