저는 log4j를 매우 신중하게 사용하고 있습니다. 그러나 여기 무슨 일이 일어나고 있는지 모르겠다 : 그것은 파일에 올바르게 로깅하고 있지만, 생성 된 로그의 파일 이름은 잘못된 것으로 보인다.Log4j는 지정된 파일 이름 대신 log4j.log에 로깅합니다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] %m%n"/>
</layout>
</appender>
<appender name="file" class="org.apache.log4j.FileAppender">
<param name="File" value="log/messagecount.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] - %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="file"/>
<!-- <appender-ref ref="rolling"/> -->
</root>
</log4j:configuration>
그것은 로그 폴더 대신 messagecount.log 파일 아래 log4j.log 파일을 만듭니다 :
여기 내의 log4j 설정입니다. 그 값 속성은 내가 생각하는대로하지 못합니까?
이
내가 로거를 초기화하기 방법은 다음과 같습니다클래스 수준 변수 :
private static Logger logger = Logger.getLogger(MessageCount.class);
그리고 init 함수 :
private void initLogger() throws IOException {
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/log4j.xml"));
PropertyConfigurator.configure(props);
logger.info("----------Logger init-----------") ;
// logger.debug("Sample debug message");
// logger.info("Sample info message");
// logger.warn("Sample warn message");
// logger.error("Sample error message");
// logger.fatal("Sample fatal message");
}
의 log4j.xml 설정 파일이 루트에 내 src 폴더.
이 파일이 유효한 XML이 아니기 때문에 log4j에를 구성하는 오류가 발생합니다, 우선, 당신
init 함수가 필요하지 않습니다. 그것을 삭제하십시오. 그냥 응용 프로그램의 클래스 경로 (bin 또는 build 폴더에'log4j.xml'을 넣으면 src 폴더에서 찾을 수 없습니다.) 그러면 응용 프로그램이 자동으로 찾게됩니다. – darioo