2009-11-12 10 views
52

Ich habe die folgenden Fehler aufgetreten:Wie ändert man den Loglevel eines Pakets mit Log4j?

http://issues.apache.org/jira/browse/AXIS2-4363

Es besagt Folgendes:

Dieser Fehler tritt nur auf, wenn Protokollebene für org.apache.axiom Abhilfe DEBUG ist so eine ist loglevel> DEBUG.

Meine Frage ist, wie gehe ich dabei vor? Ich habe meine Verzeichnisse nach einer Eigenschaftendatei durchsucht oder nach etwas gesucht, und ich habe nach etwas gesucht, das ich in Code setzen könnte, aber ich habe wirklich keine Ahnung, was ich mache. Ich führe gerade eine Konsolen-App auf meinem Desktop aus, während ich versuche, das zum Laufen zu bringen.

Update 1: Ich habe festgestellt, dass mein Axis2-Verzeichnis eine eigene log4j.properties-Datei im Stamm hat. Wird dies sicher ignoriert oder ist es Teil der Lösung (oder Teil des Problems)?

Update 2: Die Datei log4j.properties auf Stammebene ist nicht korrekt eingestellt. Im Moment sieht es wie folgt aus:

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 

aber das ist offensichtlich falsch, da dieser Code gibt „Protokollebene ist null“:

System.out.println("Log level is " + logger.getLevel()); 

Vorerst ich die Protokollebene in Code setzte mit

Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

Ich habe immer noch Probleme mit diesem - ich habe eine log4j.properties Datei zu der Konsole App Wurzel hinzugefügt, aber weder das Hinzufügen log4j.rootLogger = WARN, R oder log4j.logger.org.apache.axiom = WARN scheinen alles zu tun - ich bekomme den gleichen Fehler wie zuvor. –

Antwort

52

Welchen App-Server verwenden Sie? Jeder setzt seine Logging-Konfiguration an einen anderen Ort, obwohl die meisten heutzutage Commons-Logging als Wrapper für Log4J oder java.util.logging verwenden.

Mit Tomcat als Beispiel, this document erläutert Ihre Optionen zum Konfigurieren der Protokollierung mit einer der beiden Optionen. In beiden Fällen müssen Sie eine Konfigurationsdatei finden oder erstellen, die die Protokollebene für jedes Paket definiert, und an jeder Stelle, an der das Protokollierungssystem Protokollinformationen ausgibt (normalerweise Konsole, Datei oder Datenbank).

Im Fall von log4j dies würde die log4j.properties Datei sein, und wenn Sie die Anweisungen in dem obigen Link Dateien folgen beginnen wie die Suche:

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 

Simplest wäre, die Linie zu ändern :

log4j.rootLogger=DEBUG, R 

Um so etwas wie:

log4j.rootLogger=WARN, R 

Aber wenn Sie immer noch Ihre o wn DEBUG level Ausgang Ihrer eigenen Klassen fügen Sie eine Zeile, die sagt:

log4j.category.com.mypackage=DEBUG 

ein bisschen auf Log4J Lesen und Commons-Logging wird Ihnen helfen, das alles zu verstehen.

+0

Im Moment versuche ich nur, etwas Code als Konsolenanwendung auszuführen. Ich werde sehen, ob ich herausfinden kann, wohin die Datei log4j.properties gehen soll. Vielen Dank. –

+1

+1 Gute info, danke –

+3

Kategorie ist in log4j mit Logger veraltet – janwen

7

Ich habe genau das gleiche Problem heute, Ryan.

In meinem src (oder Ihr root) Verzeichnis, meine log4j.properties Datei hat nun folgende Ergänzung

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

Vielen Dank für das Heads-up, wie dies zu tun, Benjamin.

3

Diese Arbeit für meine:

log4j.logger.org.hibernate.type=trace 

können auch versuchen:

log4j.category.org.hibernate.type=trace 
0

setzen die Systemeigenschaft log4j.debug true =. Dann können Sie bestimmen, wo Ihre Konfiguration amuck läuft.

2

Ich bin gerade auf das Problem gestoßen und konnte nicht herausfinden, was schief gelaufen ist, auch nachdem ich all das oben und alles da draußen gelesen habe. Was ich tat, war

  1. Set Root-Logger Ebene
  2. Set Paket Protokollebene auf WARN

Jede Anmeldung Implementierung DEBUG hat es die Einstellung es über Eigenschaften eigene Art und Weise ist oder über Code (Los von der Hilfe, die auf diesem verfügbar ist)

Unabhängig von allen oben genannten würde ich nicht die Protokolle in meiner Konsole oder in meiner Protokolldatei erhalten. Was hatte ich übersehen war unter ...


enter image description here


Alles, was ich wurde mit dem oben jugglery tut, nur die Herstellung der Protokolle (bei root/Paket/Klasse Steuerung usw.), links von der roten Linie im obigen Bild. Aber ich änderte nicht die Art und Weise der Anzeige/des Verbrauchs der Logs derselben, rechts von der roten Linie im obigen Bild. Handler (Verbrauch) wird normalerweise bei INFO voreingestellt, daher würden Ihre wertvollen Debug-Anweisungen nicht durchkommen. Der Verbrauch/die Anzeige wird durch das Setzen der Loglevel für die Handler (ConsoleHandler/FileHandler etc ..) gesteuert. Also ging ich voran und setzte die Loglevel aller meiner Handler auf das Feinste und alles funktionierte.

Dieser Punkt wurde an keiner Stelle präzisiert.

Ich hoffe jemand kratzt sich am Kopf und denkt, warum die Eigenschaften nicht funktionieren, wird dieses Bit hilfreich finden.

Verwandte Themen