Log4j 2를 사용하여 로그 파일과 콘솔에 로그인 할 때 문제가 발생했습니다.Log4j 2에서 JSON 구성으로 루트 로거 만 작동하는 이유는 무엇입니까?
JSON 구성을 사용하고 있습니다. 정상적으로로드되었습니다.
{
"configuration": {
"appenders": {
"Console": {
"name": "consoleAppender",
"PatternLayout": {
"pattern": "%d{DEFAULT} %-5p [%t]: %m%n"
}
},
"File": {
"name": "fileAppender",
"fileName": "log.txt",
"PatternLayout": {
"pattern": "%d{DEFAULT} %-5p [%t]: %m%n"
}
}
},
"loggers": {
"logger":
{
"name": "fileLogger",
"level": "info",
"appender-ref": { "ref": "fileAppender" }
},
"root": {
"level": "info",
"appender-ref": { "ref": "consoleAppender" }
}
}
}
}
내가 테스트 한 다음 클래스로 로그인 : 다음과 같이 전체에서 내 구성 (log4j2.json)입니다
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LoggingTest {
static final Logger log = LogManager.getLogger(LoggingTest.class.getName());
public static void main(String[] args) {
log.trace("A trace log from " + LoggingTest.class.getName() + ".main(String[])");
log.debug("A debug log from " + LoggingTest.class.getName() + ".main(String[])");
log.info("An info log from " + LoggingTest.class.getName() + ".main(String[])");
log.warn("A warn log from " + LoggingTest.class.getName() + ".main(String[])");
log.error("An error log from " + LoggingTest.class.getName() + ".main(String[])");
log.fatal("A fatal error log from " + LoggingTest.class.getName() + ".main(String[])");
}
}
콘솔이 예상대로, 다음과 같은 메시지가 포함되어 실행
:2014-09-15 14:40:42,411 INFO [main]: An info log from LoggingTest.main(String[])
2014-09-15 14:40:42,412 WARN [main]: A warn log from LoggingTest.main(String[])
2014-09-15 14:40:42,412 ERROR [main]: An error log from LoggingTest.main(String[])
2014-09-15 14:40:42,412 FATAL [main]: A fatal error log from LoggingTest.main(String[])
log.txt 로그 파일이 만들어 지지만 비어 있습니다. 나는 또한 정확한 결과와 함께 RollingFileAppender를 사용해 보았습니다. 이 경우 아무것도에서
{
"name": "fileLogger",
"level": "info",
"appender-ref": { "ref": "consoleAppender" }
},
"root": {
"level": "info",
"appender-ref": { "ref": "fileAppender" }
}
콘솔에 로그인되지만 로그 파일에 로그 메시지가 나타납니다 : 나는 로거 '펜더-심판을 변경했습니다.
구성에 문제가 있습니까? 아니면 무엇입니까?
. 'LogManager.getLogger ("fileLogger")'를 실행하지 않으면,이 로그 작성기를 작성하지 않았기 때문에, 파일에 로그 작성 프로그램이 없습니다. –
아, 알겠습니다. 로그 항목이 두 appender 모두에서 끝나기 위해 config를 어떻게 변경해야합니까? – Kallja