2013-05-02 2 views
18

Log4j2을 사용하여 파일과 콘솔에 스프링 로그를 인쇄하려고합니다. Log4j2 구성에서 문제가되는 것 같습니다. 나는 그것을 작동시킬 수 없었다. 내 log4j2.xml 파일에이 구성을 가지고 :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> 

이 내가 내 POM 파일에있는 종속성은 다음과 같습니다 (아마 그들 중 일부는 필요하지 않습니다)

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

아니에요은 자바 코드에서 스프링과 관련이있다. 내 봄 구성을 읽고 콩을로드 아파치 카멜에서 메인 클래스를 사용하고 있습니다.

내가 뭘 잘못하고 있니? 감사!

편집 : 출력 (콘솔 또는 파일)에 스프링 로그가 표시되지 않습니다. 그러나, 나는 내 자바 코드에서 만드는 로그를 얻을 수있다. 이 설명이 도움이되기를 바랍니다.

답변

15

pom의 종속성을 보면 slf4j-log4j12가 있습니다. 이로 인해 slf4j API에 대한 로그 문이 Log4j-1.2 구현으로 라우팅됩니다. 아마도 Log4j-2.0 구현으로 라우팅되기를 원할 것입니다. slf4j-log4j12를 log4j-slf4j-impl으로 대체하고 다시 시도 할 수 있습니까?

+0

내 게시물을 업데이트하여 내 문제에 대한 추가 정보를 얻을 수 있습니다. 도와 주셔서 감사합니다. – hveiga

+0

오늘까지 대답을 못 봤어, 미안해! 나는 그것을 시험 할 것이고 나는 너에게 알릴 것이다. 답변 감사합니다. – hveiga

+1

몇 달 늦었지만 효과가있었습니다! 다시 한번 감사드립니다. – hveiga

19

당신은 Log4j를 2로 라우팅이 로깅을 갖고 싶어, 당신은

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

제거하지 않는 당신의 pom.xml에 의존성을 추가 할 필요가 있으므로, 스프링 사용 공통 로깅 1.X 발생이 문제는 당신의 공통 로깅 1.X 종속성

+3

log4j-jcl 버전이 사용 된 log4j2 버전과 일치해야하거나 클래스 불일치 문제가있을 수 있습니다. –

+0

이것은 스프링 로깅 문제를 해결했습니다. 감사! –

관련 문제