2013-05-02 20 views
18

Sto tentando di utilizzare Log4j2 per stampare i registri primaverili in un file e in una console. Immagino sia un problema nella mia configurazione di Log4j2. Non sono stato in grado di farlo funzionare. Ho questa configurazione nel mio file log4j2.xml:Logging Spring con 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> 

Queste sono le dipendenze che ho nel mio file pom: (probabilmente alcuni di loro non sono necessari)

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

io non sono fare qualsiasi cosa legata alla primavera nel mio codice Java. Sto usando la classe Main di Apache Camel che legge la mia configurazione di primavera e carica i fagioli.

Cosa sto sbagliando? Grazie!

Modifica: Non riesco a ottenere i registri primaverili in qualsiasi output (console o file). Tuttavia, sono in grado di ottenere i registri che creo nel mio codice java. Spero che questo chiarimento possa aiutare.

risposta

15

Guardando le dipendenze del tuo pom, hai questo: slf4j-log4j12. Ciò fa sì che le istruzioni del registro contro lo slf4j api vengano instradate all'implementazione di Log4j-1.2. Probabilmente vorrai che vengano indirizzati all'implementazione di Log4j-2.0. Puoi sostituire slf4j-log4j12 con log4j-slf4j-impl e riprovare?

+0

Ho aggiornato il mio post in modo da poter avere maggiori informazioni sul mio problema. Grazie per l'aiuto. – hveiga

+0

Non ti ho visto rispondere fino ad oggi, mi dispiace! Ho intenzione di testarlo e ti farò sapere. Grazie per la risposta. – hveiga

+1

Un paio di mesi di ritardo, ma ha funzionato! Grazie ancora. – hveiga

19

Questo problema causato da un uso comune di primavera-logging 1.x, quindi se si vuole avere questa registrazione indirizzati a Log4j 2, è necessario aggiungere le dipendenze nel vostro pom.xml

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

non rimuovere la tua Dipendenze 1.X di logging comune

+3

Si potrebbe voler aggiungere che la versione log4j-jcl deve corrispondere alla versione di log4j2 usata, o ci saranno problemi di disallineamento di classe. –

+0

Questo ha risolto il mio problema di registrazione primaverile. Grazie! –