org logmanager logger example configurar log4j logging

logmanager - log4j netbeans



Log4j-explicación del concepto de valor de prioridad y nombre de parámetro (1)

El componente Logger acepta las instrucciones de registro ( logger.debug() , logger.error() etc. llamadas) y las envía a los destinos correspondientes a los Appender .

Puede establecer una "prioridad" en el Logger e indicarle que acepte solo las instrucciones de registro de un determinado nivel. Los niveles son (en orden de importancia ascendente): TRACE, DEBUG, INFO, WARN, ERROR y FATAL.

Una configuración como esta:

<logger name="com.sas"> <priority value="WARN" /> .... </logger>

indica al com.sas logger que solo acepte niveles con un nivel de importancia WARN o superior (es decir, WARN, ERROR y FATAL).

Las declaraciones de registro se envían luego a Appender s. Los agregadores también pueden configurarse para aceptar solo declaraciones de un cierto nivel de importancia, uno por encima de un cierto "umbral".

Una configuración como:

<appender name="B2BAPP" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="ERROR"/> .... </appender>

le dice al appender que solo acepte declaraciones de importancia ERROR o superior (es decir, ERROR y FATAL).

¿Entonces el nivel de registro para "com.sas" se establecería en "DEBUG" o "ERROR"?

En su ejemplo, el nivel de registro se establece en DEBUG. Lo que se escribe por los agregadores es ortogonal al problema.

En cuanto a sus dos ejemplos:

valor de prioridad = "DEBUG" y nombre de parámetro = "Umbral" valor = "ERROR"

valor de prioridad = "ERROR" y nombre de parámetro = "Umbral" valor = "DEBUG"

1. La prioridad del registrador establecida en DEBUG y el umbral del agregador establecido en ERROR significa que el registrador pasa a DEBUG, INFO, WARN, ERROR y FATAL, pero Appender solo acepta ERROR y FATAL, por lo que solo obtiene ERROR y FATAL en su registro.

2. La prioridad del registrador establecida en ERROR y el umbral del agregador establecido en DEBUG significa que el registrador solo pasa ERROR y FATAL, mientras que el agregador acepta DEBUG, INFO, WARN, ERROR y FATAL. Nuevamente obtienes solo ERROR y FATAL en tu registro.

Pero eso es solo un caso desafortunado. Mezclar la prioridad y el umbral puede proporcionarte una buena funcionalidad. Por ejemplo...

... suponga que acaba de colocar una aplicación en el escenario y necesita monitorearla un poco hasta que la mueva a producción. Tienes un desarrollador y un administrador del sistema haciendo el monitoreo. Mientras que el desarrollador desea todos los registros, el administrador del sistema está ocupado y solo quiere ver los errores.

¿Cómo configuras eso? Qué tal algo como esto:

<appender name="developerLogs" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/LOGS/SAM/developerLogs.log" /> <param name="Threshold" value="DEBUG" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n"/> </layout> </appender> <appender name="sysAdminLogs" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/LOGS/SAM/sysAdminLogs.log" /> <param name="Threshold" value="ERROR" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n"/> </layout> </appender> <logger name="com.test"> <priority value="DEBUG" /> <appender-ref ref="developerLogs" /> <appender-ref ref="sysAdminLogs" /> </logger>

Si ejecuta código como:

Logger logger = Logger.getLogger("com.test"); logger.debug("some debug statement"); logger.info("some info statement"); logger.warn("some warn statement"); logger.error("some error statement"); logger.fatal("some fatal statement");

obtienes esto en sysAdminLogs.log :

some error statement some fatal statement

y esto en developerLogs.log :

some debug statement some info statement some warn statement some error statement some fatal statement

Espero que esta explicación describa mejor los conceptos.

Mi log4j.xml :

<appender name="B2BAPP" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="/LOGS/SAM/B2B_VJ.log"/> <param name="Threshold" value="ERROR"/> <param name="MaxFileSize" value="10000KB"/> <param name="MaxBackupIndex" value="10"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} %5p [%c:%L] %m%n"/> </layout> </appender> <logger name="com.sas"> <priority value="DEBUG"/> <appender-ref ref="B2BAPP"/> </logger>

Me gustaría entender el comportamiento del valor de prioridad = "DEBUG" y el nombre de param = "Umbral" value = "DEBUG" .

En mi registrador ( com.sas ) establecí el valor de prioridad "DEBUG" y el agregador de este registrador es "B2BAPP" y en "B2BAPP" definí "Umbral" como "ERROR".

¿Entonces el nivel de registro para "com.sas" se establecería en "DEBUG" o "ERROR"?

Casos :

valor de prioridad = "DEBUG" y nombre de parámetro = "Umbral" valor = "ERROR"

valor de prioridad = "ERROR" y nombre de parámetro = "Umbral" valor = "DEBUG"

¿Cuál sería la salida de los casos anteriores? ¿Como funciona?