2013-05-02 14 views
18

Ich versuche Log4j2 zu verwenden, um die Spring-Logs in eine Datei und Konsole zu drucken. Ich denke, das ist ein Problem in meiner Log4j2-Konfiguration. Ich habe es nicht funktionieren lassen. Ich habe diese Konfiguration in meiner log4j2.xml Datei:Logging Spring mit Log4j2

<?xml version="1.0" encoding="UTF-8"?> 
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5"> 
    <properties> 
     <property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property> 
     <property name="filename">${env:MY_ROOT}/logs/mylog.log</property> 
     <property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property> 
    </properties> 
    <appenders> 
     <appender name="Console" type="Console" target="SYSTEM_OUT"> 
      <layout type="PatternLayout" pattern="${patternlayout}" /> 
     </appender> 
     <appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true" 
     append="true"> 
      <layout type="PatternLayout" pattern="${patternlayout}" /> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="50 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="30" /> 
     </appender> 
     <appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128"> 
      <appender-ref ref="File" /> 
     </appender> 
    </appenders> 
    <loggers> 
     <root level="info"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsynchFile" /> 
     </root> 
     <logger name="org.springframework.beans"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsynchFile" /> 
     </logger> 
    </loggers> 
</configuration> 

Dies sind die Abhängigkeiten, die ich in meiner pom-Datei: (wahrscheinlich einige von ihnen sind nicht erforderlich)

<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-api</artifactId> 
<version>1.6.6</version> 
</dependency> 

<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-log4j12</artifactId> 
<version>1.6.6</version> 
</dependency> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-api</artifactId> 
<version>2.0-beta5</version> 
</dependency> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-core</artifactId> 
<version>2.0-beta5</version> 
</dependency> 
<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-1.2-api</artifactId> 
<version>2.0-beta5</version> 
</dependency> 

<dependency> 
<groupId>com.lmax</groupId> 
<artifactId>disruptor</artifactId> 
<version>3.0.0.beta3</version> 
</dependency> 

Ich bin nicht in meinem Java-Code alles zu tun, was mit dem Frühling zu tun hat. Ich benutze die Hauptklasse von Apache Camel, die meine Frühlingskonfiguration liest und die Bohnen lädt.

Was mache ich falsch? Vielen Dank!

Bearbeiten: Ich bekomme keine Frühjahrsprotokolle in irgendeiner Ausgabe (Konsole oder Datei). Ich bin jedoch in der Lage, die Protokolle, die ich in meinem Java-Code erstelle, zu erhalten. Ich hoffe, diese Klarstellung wird helfen.

Antwort

15

Mit Blick auf die Abhängigkeiten in Ihrem Pom haben Sie diese: slf4j-log4j12. Dies führt dazu, dass Protokollanweisungen für die slf4j-API an die Log4j-1.2-Implementierung weitergeleitet werden. Wahrscheinlich möchten Sie, dass diese an die Log4j-2.0-Implementierung weitergeleitet werden. Können Sie slf4j-log4j12 durch log4j-slf4j-impl ersetzen und es erneut versuchen?

+0

Ich habe meinen Beitrag aktualisiert, so dass Sie weitere Informationen zu meinem Problem haben können. Danke für die Hilfe. – hveiga

+0

Ich habe dich bis heute nicht gesehen, es tut mir leid! Ich werde es testen und ich werde es euch wissen lassen. Danke für die Antwort. – hveiga

+1

Paar Monate zu spät, aber es hat funktioniert! Danke noch einmal. – hveiga

19

Diese durch Feder Verwendung Common-Logging 1.X verursacht Problem, wenn Sie also diese Protokollierung zu Log4j geroutet haben wollen 2, müssen Sie

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
    <version>2.1</version> 
</dependency> 

Abhängigkeiten in Ihrem pom.xml hinzufügen nicht entfernen Sie Ihre Common-Logging 1.X Abhängigkeiten

+3

Sie können hinzufügen, dass die log4j-jcl-Version mit der verwendeten log4j2-Version übereinstimmen muss, da andernfalls Probleme mit der Klassenkonfliktfreiheit auftreten. –

+0

Das löste mein Problem mit der Frühjahrsmessung. Vielen Dank! –

Verwandte Themen