log4java application java hibernate spring log4j

java - application - ¿Filtrando mensajes log4j de frameworks de terceros?



spring configuration log4j (4)

En log4j.properties puede definir niveles individuales por registrador:

log4j.logger.<name>=FATAL

En log4j.xml, la sintaxis es

<logger name="<name>"> <level value="fatal"/> </logger>

<nombre> es a menudo el nombre de clase calificado completo. Es posible que desee utilizar WARN o ERROR en lugar de FATAL

¿Cómo filtrar los mensajes de registro de marcos de terceros externos? Estoy usando el marco Hibernate y Spring y me gustaría suprimir los registros para que solo aparezcan mis log4j.


En mi archivo log4j.properties, configuré el nivel de registro del registrador de raíz en ERROR. Luego, para los paquetes que específicamente deseo registrar, como el código de mi aplicación, configuro el nivel de registro en INFO o DEPURAR.

log4j.rootLogger=ERROR, stdout log4j.logger.com.initech.tps=DEBUG log4j.logger.org.hibernate.SQL=INFO

Veo compañeros de trabajo que configuran el registro de raíz como bajo y luego terminan enumerando todo lo que no quieren ver, eso simplemente me parece retrógrado. Preferiría enumerar lo que quiero registrar que todas las cosas que no quiero registrar.

Por cierto, desactivar completamente el inicio de sesión para un componente de terceros me parece una mala idea. Por ejemplo, Spring es relativamente ruidoso y usa WARN para cosas que realmente no necesito saber, pero si registra una entrada de ERROR para algo, quiero verla.


Puede hacerlo cambiando el nivel del registrador en el archivo log4j.properties/log4j.xml.

Debe configurar el <level value="off"/> registrador si desea filtrar los registros del paquete, pero mantener la configuración del registrador para su uso posterior. También puede configurarlo al nivel más alto para que se registre solo en caso de error o problema grave.

Las siguientes entradas se deben agregar a log4j.xml para desactivar el registro de los paquetes de hibernación y marco de resorte:

<logger name="org.springframework"> <level value="off"/> </logger> <logger name="org.hibernate"> <level value="off"/> </logger>


Simplemente no agregue esos paquetes en su log4j.properties. Por ejemplo, debe tener esto para Spring en su archivo de propiedades. Quítelo si tiene algunas entradas como a continuación (cualquier cosa que comience con org.springframework). Lo mismo debe hacerse para hibernar.

#Logs the SQL from Spring log4j.logger.org.springframework.jdbc.core.JdbcTemplate=ERROR #Logs the SQL parameters from Spring log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=ERROR

Además, como se mencionó, también debe establecer lo siguiente. Olvidé mencionar esto.

log4j.rootLogger=FATAL or log4j.rootLogger=ERROR