2014-01-27 5 views
1

내 클래스 경로에 log4j2 jar 파일이 있습니다. 아래는 Log4j2.xml입니다. 내 로컬 파일 "G : /test/apps.log"에 로그를 쓰고 싶어하지만, 나는 두 가지 문제에 봉착 : 웹 응용 프로그램의 Log4j2 구성

  1. 내가 웹 응용 프로그램을 실행

    는, 출력이 콘솔에만 인쇄를 그리고 파일에 아닙니다.
  2. Log4j2.xml을 WEB-INF/classes에 넣으라고 제안한 몇 가지 답변을 보았습니다. 그러나, 내가 깨끗한 빌드를 할 때, 파일은 삭제 될 것이므로, 설정 파일을 어디에 두어야합니까?

    참고 : 저는 Tomcat : 7.0.34, Servlet 3을 사용합니다. 나는 Cantalina 속성에서 Log4J에 대한 참조를 삭제했습니다.

    <?xml version="1.0" encoding="UTF-8"?> 
    <configuration status="warn"> 
        <appenders> 
    
        <Console name="Console" target="SYSTEM_OUT"> 
         <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> 
        </Console> 
    
        <File name="MyFile" fileName="G:/test/apps.log"> 
         <PatternLayout pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
        </File> 
    
        </appenders> 
    
        <loggers> 
    
        <root level="trace"> 
         <appender-ref ref="MyFile" level="trace" additivity="true"/> 
        </root> 
    
        </loggers> 
    </configuration> 
    

답변

3

당신은 log4j에-API-2.0 및 클래스 경로에서의 log4j-코어 2.0 jar 파일을 모두 필요합니다. 코어 jar이 없으면 api jar는 SimpleLogger (콘솔) 구현으로 돌아갑니다.

구성을 <configuration status="trace">으로 변경하면 구성 문제를 해결하는 데 도움이되는 log4j2 내부 로깅을 볼 수 있습니다. (이것은 또한 비록 log4j에 - 코어 2.0 항아리가 필요합니다.)

는 log4j2.xml 파일은 클래스 경로에있을 수 있습니다, 또는 당신은

+0

단지 지정하는 방법이 있습니까, 시스템 등록 정보 -Dlog4j.configurationFile=/path/to/log4j2.xml과 위치를 지정할 수 있습니다 '-Dconfig.location =/path/to/folder'와 같은 폴더와 log4j2가이 폴더를 검색하여'log4j2.xml' 파일을 찾으십니까? 내 응용 프로그램에서는 이미 구성 파일과'log4j2.xml'을 넣은 폴더가 있으며 응용 프로그램을 시작하기 위해 별도의 옵션 플래그를 사용하고 싶지 않습니다. – lanoxx

+1

'log4j.configurationFile' 시스템 속성 대신'log4j2.xml' 파일을 클래스 패스에 넣는 것도 가능합니다. 클래스 경로에 해당 폴더 (구성 파일 포함)를 포함시킬 수 있습니다. –

+0

나는 이것을 알고있다. 프로그래밍 방식으로이 작업을 수행하는 방법을 찾고있었습니다. – lanoxx