2014-12-22 1 views
0

작업 : 내가 SRC/자원이 파일을두고, 내가이 가이드를 따라 로그하지 난 내 log4j2.xml 파일에이 구성을

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
    <File name="FileLogger" fileName="HelloLog4j.log" append="false"> 
     <PatternLayout pattern="%d %t %-5p %c{2} - %m%n"/> 
    </File> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Logger name="hello" level="trace"> 
     <AppenderRef ref="FileLogger"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="STDOUT"/> 
    </Root> 
    </Loggers> 
</Configuration> 

: Guide 을하지만 난 내 프로젝트를 실행할 때 나는이 오류가 : 그 작동하지 않는 경우

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 
+0

가능한 dup http://stackoverflow.com/questions/25487116/log4j2-configuration-no-log4j2-configuration-file-found –

+0

가능한 dup하지만 내 문제는 내 클래스 경로에이 파일이 있습니다.하지만 작동하지 않습니다. .. –

답변

0

XML 파일이 src 폴더 자체와 그 안에없는 내부 src/resources 또는 아무것도 내부이어야를, 그것은 folder.However의 루트 레벨에 있어야한다 여기 약간있다. 그것을하는 다른 방법.

DOM Configurator을 사용하여 수동으로 로거를 구성 할 수 있습니다.

다음은 사용 방법을 보여주는 샘플 코드입니다.

private static org.apache.log4j.Logger logger; 

public static Logger getLogger(){ 
    if(logger == null){ 
     logger= LogManager.getLogger(ClassName.class); 
     DOMConfigurator.configure("path/to/log4jxml"); 
    } 
    return logger; 

} 

클래스 이름은 좋은 연습은 사용자 정의 클래스에서 이것에 대한 단일 디자인 패턴을 사용하는 것입니다 class.It를 인스턴스화 한 다음에 잊지 getLogger method.Don't 통해 인스턴스화되는 클래스가 될 것입니다 생성자를 비공개로 만듭니다.

편집 :

콘솔 appender.The 변환 패턴의 샘플 구성이 날짜 레이아웃입니다.

+0

하지만 web.xml에 뭔가 추가해야합니까? –

+0

이것은 web.xml과 관련이 없습니다. 먼저 log4j2.xml을 src 루트에 배치하십시오. 문제가 해결되지 않으면 Logger 인스턴스를 인스턴스화하기 위해 제공 한 코드를 사용해보십시오. Maven 또는 무언가와 같은 빌드 도구를 사용하고 있지만 코드가 작동해야하는 경우에는 다릅니다. – Madusudanan

+0

구성이 작동하지만 아무 것도 출력하지 않습니다 ... logger.debug ("Hello world - debug log"); \t logger.info ("Hello world - info log"); \t logger.warn ("Hello world - 경고 로그"); –

1

표준에 충실한 DOMConfigurator를 사용하지 않는 것이 좋습니다. 클래스 경로에 log4j2.xml을 넣으십시오. 그 위치는 앱과 런타임 환경에 따라 다릅니다.