2012-11-25 9 views
6

Ich versuche Log4j2 Log-Datei zu dem System zu erstellen Ich entwickle richtig, ich habe die Anweisung auf ihre site gefolgt und es ist kein Fehler aufgetreten, wenn ich es ausführe, aber das Protokoll ist nicht gespeichert, wo ich es eingestellt habe (zB "D: \ logs \ app.log").Log4j2 Speichern von Datei (mit RollingFile Appender)

Hier ist mein log4j.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="OFF"> 
    <appenders> 
    <RollingFile name="MyRollingFile" fileName="D:/logs/app.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <pattern>%d %p %C{1.} [%t] %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
     <TimeBasedTriggeringPolicy /> 
     <SizeBasedTriggeringPolicy size="250 MB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="20"/> 
    </RollingFile> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </Console> 
    </appenders> 
    <loggers> 
    <logger name="Log_RollingFile" level="TRACE" additivity="false"> 
     <appender-ref ref="MyRollingFile"/> 
    </logger> 
    <root level="ERROR"> 
     <appender-ref ref="Console"/> 
    </root> 
    </loggers> 
</configuration> 

Ich versuchte:

  • löschen app.log zu sehen, ob meine Konfiguration (D: \ logs \ app.log) funktioniert. Wenn ich die Anwendung starte, erstellt es app.log, also denke ich, dass es die Konfiguration sieht und die einzige Sache ist, dass es die log.info NICHT rettet, die ich in der Java-Anwendung
  • Stammwurzel zu "TRACE" geändert habe, und es druckt die log.info.

[EDIT:]

Ich habe auch diese Bibliotheken auf meinem Classpath

  • log4j-api-2.0-beta3.jar
  • log4j-Core- 2.0-beta3.jar

Fehle ich etwas in RollingFile-Konfiguration oder eine Bibliothek (vielleicht)?

Vielen Dank im Voraus.

Antwort

3

Der Name Ihres Loggers ist falsch.

Wie in den Konfigurationsanweisungen, zu denen Sie verlinkt sind, erklärt, sollte der Logger entsprechend dem Paket/den Klassen benannt werden, für die Sie die Protokollierung erfassen möchten.

In ihrem Beispiel protokolliert der Logger mit der Bezeichnung com.foo.Bar alles aus der Bar Klasse in Paket com.foo mit TRACE Ebene.