2009-06-24 5 views
24

Lassen Sie mich diese Frage vorbringen, indem ich sage, dass ich Google erschöpft habe, oder zumindest, wonach ich gesucht habe. "log4j threshold", "log4j threshold category", "log4j appender threshold category" usw. Aber ich verstehe wirklich nicht die Ergebnisse, die ich von Google bekomme.log4j appender Schwelle und Kategorie

Dies ist die vollständige Konfiguration, die mir gegeben wurde. Ich kann nicht herausfinden, wie ich es an meine Bedürfnisse anpassen kann.

<?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> 

Ich verstehe nicht, wie der "Schwellenwert" Ebene des Appenders mit den Kategorien interagiert. Sehen Sie, ich möchte nur, dass com.foo.bar Nachrichten auf der Konsole angezeigt werden. Aber es scheint, als würde ich viel mehr bekommen, zum Beispiel, org.jboss.wsf.framework gibt DEBUG-Nachrichten aus, obwohl ich eine Kategorie mit einem Namen habe, der zu ihr passt und auf FATAL gesetzt ist.

Ich bin sicher, dass ich die richtige Konfigurationsdatei manipuliere, da jboss berichtet, dass es die Konfiguration neu lädt, nachdem ich es ändere. Wie stelle ich die Kategorien/Schwellenwerte richtig ein? Was ist der Unterschied zwischen der Schwelle und der Kategorie?

Beispielausgabe (abgeschnitten). Warum erscheint Quarz auf der Konsole, wenn ich ihn auf FATAL gesetzt habe?

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

Können Sie die echte log4j-Datei anzeigen (z. B. wie Sie die Kategorie org.jboss.wsf festlegen) und die tatsächliche problematische Konsolenausgabe? – Yishai

+0

Yishai: Ich habe die Frage aktualisiert. – Amy

Antwort

25

Um die spezifische Frage zu beantworten, warum zeigen Quarz auf der Protokollierung, würden Sie die Quarz-Konfiguration ändern müssen, wie folgt:

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

Das additivity Attribut sagt log4j die Wurzel Einstellung außer Kraft zu setzen und diese verwenden nur für org.quartz.

In einer früheren Version der Frage, die Sie angegeben haben, wollten Sie nur die Nachrichten aus diesen Klassen eingeschaltet, zu tun, dass Sie mit der Konfiguration der Priorität im Root-Element zu fatal (oder sogar NEIN) beginnen müssen, und dann wird es protokollieren Sie nur die Pakete/Klassen, die Sie explizit aktivieren.

Um Ihre Frage zu beantworten, wie Schwellenwert mit Kategorie interagiert, im Grunde denken Sie daran ist, wie ein Publish/Subscribe. Die Kategorie legt fest, was vom Logger veröffentlicht wird, der Schwellenwert legt die Subskriptionsstufe des Appenders fest.

Dies ist ein wenig kompliziert, weil die Kategorie keine einzige Sache ist, sondern eine Hierarchie, so dass die Tatsache, dass Sie die Veröffentlichungsstufe auf eine Kategorie festlegen, nicht die ganze Geschichte ist. Es kann in der Hierarchie überschrieben werden, wie es in Ihrem Fall war.

+0

Vielen Dank! – Amy

+0

Ich fand diese Frage und Antwort sehr verwirrend. Ich glaube, dass die Frage ein paar Mal bearbeitet wurde, daher ist diese Antwort jetzt ziemlich irreführend. Sicherlich, wenn ich das gegebene log4j xml verwende, _ _not_ nicht irgendwelche INFO- oder DEBUG Quartznachrichten kommend herauskommen - sie sind auf FATAL beschränkt. Hinweis: Ich habe das in einem eigenständigen Programm getestet, nicht in JBoss, also weiß ich nicht, ob JBoss etwas anderes mit log4j macht. – davidfrancis

+0

@davidfrancis, JBoss setzt die Stammebene wahrscheinlich auf etwas anderes als in Ihrem Standalone. Ich denke, die Frage und die Antwort sind immer noch gültig. – Yishai

4

Move "< appender-ref ref =" console "/>" von < root> nach < Kategorie name = "com.foo.bar">.

d.h .:

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

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

Mit der Config, dass Sie die Konsole zeigen keine Debug-Meldungen erhalten sollte so überprüfen, ob eine andere Konfiguration verwendet werden könnte, oder wenn ein Code programmatisch ist die Config ändern.

+0

Ich habe die Frage mit der vollständigen Konfiguration und einigen der Beispielausgabe von dem, worüber ich rede, aktualisiert. – Amy

+0

Nur weil JBoss neu lädt, bedeutet das nicht, dass es verwendet wird. Siehe debug für true für das Root-Element von log4j und die Ausgabe kann Ihnen helfen zu sehen, was schief läuft. –

+0

Danke ...Es funktioniert gut mit diesem Vorschlag. Mein Problem hat sich gelöst, nachdem die Appender-Deklaration von entfernt wurde. –