2009-06-24 35 views
24

Permítanme comenzar con esta pregunta diciendo que he agotado Google, o al menos lo que he estado tratando de buscar. "log4j threshold", "log4j threshold category", "log4j appender threshold category", etc. Pero realmente no entiendo los resultados que obtengo de Google.log4j appender threshold y categoría

Esta es la configuración completa que me han dado. No puedo encontrar la forma de modificarlo para adaptarlo a mis necesidades.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<!-- ===================================================================== --> 
<!--                  --> 
<!-- Log4j Configuration             --> 
<!--                  --> 
<!-- ===================================================================== --> 

<!-- $Id: jboss-log4j.xml 62403 2007-04-18 15:26:43Z [email protected] $ --> 

<!-- 
| For more configuration infromation and examples see the Jakarta Log4j 
| owebsite: http://jakarta.apache.org/log4j 
--> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 

<!-- ================================= --> 
<!-- Preserve messages in a local file --> 
<!-- ================================= --> 

<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="File" value="${jboss.server.log.dir}/server.log"/> 
    <param name="Append" value="false"/> 

    <!-- Rollover at midnight each day --> 
    <param name="DatePattern" value="'.'yyyy-MM-dd"/> 

    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
</appender> 


<!-- ============================== --> 
<!-- Append messages to the console --> 
<!-- ============================== --> 

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="Target" value="System.out"/> 
    <param name="Threshold" value="DEBUG"/> 

    <layout class="org.apache.log4j.PatternLayout"> 
    <!-- The default pattern: Date Priority [Category] Message\n --> 
    <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/> 
    </layout> 
</appender> 



<!-- ================ --> 
<!-- Limit categories --> 
<!-- ================ --> 

<category name="com.arjuna"> 
    <priority value="FATAL"/> 
</category> 

<category name="com.sun.facelets"> 
    <priority value="ERROR"/> 
</category> 

<category name="jacorb"> 
    <priority value="FATAL"/> 
</category> 

<category name="javax.enterprise.resource"> 
    <priority value="WARNING"/> 
</category> 

<category name="javax.enterprise.resource.webcontainer.jsf"> 
    <priority value="WARNING"/> 
</category> 

<category name="org.apache"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.hibernate"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss"> 
    <priority value="INFO"/> 
</category> 

<category name="org.jboss.ejb3.EJB3Deployer"> 
    <priority value="WARNING" /> 
</category> 

<category name="org.jboss.ejb3.JmxKernelAbstraction"> 
    <priority value="WARNING" /> 
</category> 

<category name="org.jboss.management"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss.serial"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss.wsf.framework"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jgroups"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.quartz"> 
    <priority value="FATAL" /> 
</category> 
<!-- ======================= --> 
<!-- Setup the Root category --> 
<!-- ======================= --> 

<root> 
    <appender-ref ref="CONSOLE"/> 
    <appender-ref ref="FILE"/> 
</root> 



</log4j:configuration> 

No entiendo cómo el nivel de "umbral" del apilador interactúa con las categorías. Ver, solo quiero que los mensajes com.foo.bar se muestren en la consola. Pero parece que estoy obteniendo mucho más que eso, por ejemplo, org.jboss.wsf.framework está eliminando los mensajes de DEPURACIÓN, a pesar de que tengo una categoría con un nombre que coincida con FATAL.

Estoy seguro de que estoy manipulando el archivo de configuración correcto, ya que jboss informa que está recargando la configuración después de que la cambie. Entonces, ¿cómo configuro los niveles de categoría/umbral correctos? ¿Cuál es la diferencia entre el umbral y la categoría?

Salida de ejemplo (recortada). ¿Por qué aparece el cuarzo en la consola cuando lo tengo configurado en FATAL?

2009-06-22 00:58:37,666 INFO [org.quartz.plugins.history.LoggingJobHistoryPlugin] Job JobInitializationPlugin.JobInitializationPlugin_jobInitializer execution complete at 00:58:37 06/22/2009 and reports: null 
2009-06-22 01:08:37,669 DEBUG [org.quartz.simpl.SimpleJobFactory] Producing instance of Job 'JobInitializationPlugin.JobInitializationPlugin_jobInitializer', class=org.quartz.jobs.FileScanJob 
2009-06-23 15:44:17,790 INFO [org.jboss.wsf.stack.jbws.NativeServerConfig] 3.0.5.GA 
2009-06-23 15:44:17,868 DEBUG [org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl] setDeploymentAspects on WSDeploymentAspectManagerEJB 
2009-06-23 15:44:17,868 DEBUG [org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl] setDeploymentAspects on WSDeploymentAspectManagerEndpointAPI 
+0

¿Puede mostrar el archivo log4j real (por ejemplo, cómo establece la categoría org.jboss.wsf) y la salida problemática real de la consola? – Yishai

+0

Yishai: He actualizado la pregunta. – Amy

Respuesta

25

Para responder a la pregunta específica de por qué no mostrar cuarzo arriba en el registro, que tendría que cambiar la configuración de cuarzo de la siguiente manera:

<category name="org.quartz" additivity="false"> 
    <priority value="FATAL" /> 
</category> 

El atributo aditividad dice log4j para anular el ajuste de raíz y utilizar este solo para org.quartz.

En una versión anterior de la pregunta que indicó que solo quería que esos mensajes de esas clases se activaran, para hacerlo tiene que comenzar configurando la prioridad en el elemento raíz en fatal (o incluso NO) y luego lo hará solo registre aquellos paquetes/clases que activa explícitamente.

Para responder a su pregunta acerca de cómo el umbral interactúa con la categoría, básicamente piense que es como una publicación/suscripción. La categoría establece lo que publica el registrador, el umbral establece el nivel de suscripción del appender.

Esto se complica ligeramente porque la categoría no es una sola cosa, sino más bien una jerarquía, por lo que el hecho de establecer el nivel de publicación en una categoría no es toda la historia. Puede ser anulado en la jerarquía, como lo fue en su caso.

+0

¡Muchas gracias! – Amy

+0

Encontré esta pregunta y respuesta muy confusas. Creo que la pregunta ha sido editada algunas veces, por lo que esta respuesta ahora es bastante engañosa. Ciertamente, si utilizo el log4j xml dado, no obtengo ningún mensaje de INFO o DEBUG Quartz, sino que están restringidos a FATAL. Nota: Probé esto en un programa independiente, no en JBoss, así que no sé si JBoss hace algo inteligente/diferente con log4j. – davidfrancis

+0

@davidfrancis, JBoss probablemente establezca el nivel raíz en algo diferente de lo que es en su versión independiente. Creo que la pregunta y la respuesta siguen siendo válidas. – Yishai

4

Move "< ref appender-ref =" consola "/>" de < root> a < category name = "com.foo.bar">.

es decir .:

<category name="com.foo.bar"> 
    <priority value="DEBUG"/> 
    <appender-ref ref="CONSOLE"/> 
</category> 

<root> 
    <appender-ref ref="FILE"/> 
</root> 

Con la configuración que usted muestra la consola no debe recibir ningún mensaje de depuración a fin de comprobar si cualquier otra configuración podría ser utilizado o si algún código está cambiando la configuración mediante programación.

+0

Actualicé la pregunta con la configuración completa y parte de la salida de ejemplo de lo que estoy hablando. – Amy

+0

El hecho de que JBoss vuelva a cargar no significa que sea lo que se usa. Vea la depuración en true para el elemento raíz de log4j y la salida puede ayudarlo a ver qué está pasando mal. –

+0

Gracias ...funciona bien con esta sugerencia. Mi problema se resolvió después de eliminar la declaración del appender de la etiqueta . –

Cuestiones relacionadas