2013-06-30 1 views
1

Log4j 버전을 사용하기 전의 시간. Spring 애플리케이션에서 1. Spring - log4j2 XML 구성 파일을 사용하지 않는 이유는 무엇입니까?

PropertyConfigurator.configure(Foo.class.getResourceAsStream("log4j.properties")); 

지금 내가의 Log4j 버전으로 전환 : log4j.properties 구성 파일이있는 곳에 나는 정의하려면이 같은 것을 사용했다. 2와 나는 XML로 구성을 가지고있다 :

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' > 
    <appenders>  
     <appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender"> 
      <param name="url" value="jdbc:postgresql://hostname/db"/> 
      <param name="driver" value="org.postgresql.Driver"/> 
      <param name="user" value="postgres"/> 
      <param name="password" value="pwd"/> 
      <param name="sql" value="INSERT INTO logs (logger, log_level, message) VALUES('%l','%p','%m')"/> 
      <layout class="org.apache.log4j.PatternLayout"></layout> 
     </appender> 
     <appender name="CA" class="org.apache.log4j.ConsoleAppender"> 
      <layout class="org.apache.log4j.PatternLayout"> 
       <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
      </layout> 
     </appender> 
    </appenders> 
    <loggers> 
     <root level="trace"> 
      <appender-ref ref="CA" level="debug"/> 
      <appender-ref ref="DB" level="info"/> 
     </root> 
    </loggers> 
</log4j:configuration> 

그러나 Spring은이 파일을 사용하지 않으며 로깅이 콘솔이나 데이터베이스에 추가되지 않는다.

public class Foo { 

    Logger LOG = LogManager.getLogger(Foo.class); 

    public void init() { 

     System.out.println("START..."); 

     LOG.info("INFO"); 
     LOG.debug("DEBUG"); 

     System.out.println("END..."); 

    } 
} 

그리고 이것은 출력 : 내가 잘못

run: 
VI 30, 2013 9:36:16 ODP. org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]2548ccb8: startup date [Sun Jun 30 21:36:16 CEST 2013]; root of context hierarchy 
VI 30, 2013 9:36:16 ODP. org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [foo/applicationContext.xml] 
VI 30, 2013 9:36:16 ODP. org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 
INFO: Pre-instantiating singletons in org.s[email protected]21e9c99c: defining beans [taskMaker]; root of factory hierarchy 
START... 
END... 
BUILD SUCCESSFUL (total time: 1 second) 

을 뭐하는 거지?

답변

2

제공 한 구성 XML은 log4j-1.x 구문을 사용합니다. Log4j-2.0 구성 파일이 다릅니다. 웹 사이트에서 예제를 확인하십시오.

다음으로 log4j-2.0은 클래스 경로에서 log4j2.xml을 찾습니다. 당신이 위치를 지정 내가 Gradle을 사용하고

-Dlog4j.configurationFile=path/to/log4j2.xml 
0

시스템 속성을 사용하여 프로세스를 시작하고 전이 의존성이 나를 위해 방법으로지고 있었다 그 logback/SLF4J를 발견하십시오. 그들을 제거하기 위해 나는 포함 :

configurations { 
    all*.exclude module: 'log4j-over-slf4j' 
    all*.exclude group: 'ch.qos.logback' 
} 

내 gradle 빌드 파일에 포함되어 있습니다.