저는 log4j2를 처음 사용하고 있습니다. 이제 log4j2가 초기화되었고 작업 중이지만 루트 로거 수준을 설정할 수 없습니다.log4j2 루트 수준이 작동하지 않습니다.
내 프로젝트는 Java Web Project (Windows 7 x64에서 MyEclipse를 사용 중입니다)이며 Tomcat 7.0.52에서 실행합니다.
나는 수업이를 사용
log.trace("Here is some TRACE");
log.debug("Here is some DEBUG");
log.info("Here is some INFO");
log.warn("Here is some WARN");
log.error("Here is some ERROR");
log.fatal("Here is some FATAL");
는 문서에 따라, 나는 log4j2의 기본 설정입니다 생각 오류 및 치명적 메시지를 받았습니다. 그건 내 자신의 구성이 효과가 없다는 것을 의미합니다.
가
내 log4j2.xml을 같이
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" fileName="logs/example.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</appenders>
<loggers>
<root level="debug">
<appender-ref ref="Console"/>
<appender-ref ref="File"/>
</root>
</loggers>
</configuration>
이
내 log4j2.xml
파일이 패키지 아래에 배치 된 나는이 같은 web.xml 파일을 구성 배포 로그에 따르면
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/path/to/a/package/log4j2.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
, 내 생각 log4j2가 구성 파일을 찾았습니다 :
INFO: Initializing log4j from [classpath:/path/to/a/package/log4j2.xml]
INFO 24, 2014 3:37:34 org.apache.catalina.core.ApplicationContext log
INFO: Log4jServletContextListener ensuring that Log4j starts up properly.
INFO 24, 2014 3:37:34 org.apache.catalina.core.ApplicationContext log
INFO: Log4jServletFilter initialized.
문제?
@Remko에게 log4j.configurationFile
을 언급 해 주신 덕분에 무엇이 system property
인지 알 수있었습니다.
이전에 log4j2의 documentation에있는 자동화 구성 세션에 대해 읽었지만 system property
을 이해하지 못해서 그냥 무시했습니다.
내가 <context-param>
과 system property
의 관계에 대해 확실하지, 그래서 나는이 시도 :
<context-param>
<param-name>log4j.configurationFile</param-name>
<param-value>classpath:/path/to/a/package/log4j2.xml</param-value>
</context-param>
작동하지 않습니다.
둘째, 나는 바람둥이의 시작 옵션에 -Dlog4j.configurationFile="CLASSPATH:/path/to/a/package/log4j2.xml"
을 추가하려고 시도했다.
나는 내 문제 그것을 this
같은이 아마 configurationFile이 CLASSPATH
표기법을 지원하지 않는 것을 발견, 그래서는 절대 경로 여전히 -Dlog4j.configurationFile="F:\MySpace\myproject\src\foo\blabla\resource\log4j2.xml"
를 사용하려고, 그것은 ..
를 작동하지 않습니다
'classpath : path' 표기법은 위치를 지원하지만 * 소문자 여야합니다 *. –
팁 : Log4J2가 ''로 시작하도록 구성을 변경하여 log4j2.xml 구성 파일을 찾았는지 확인할 수 있습니다. 그러면 log4j2가 log4j2.xml 파일을 찾으면 log4j2 내부 로깅이 콘솔 (예 : Tomcat 콘솔)에 인쇄됩니다. –
팁 2 : 시스템 등록 정보'-Dlog4j2.StatusLogger.level = TRACE'를 설정하여 내부 log4j 상태 로거를 활성화하십시오. 그러면 log4j2 초기화에 대한 세부 사항이 콘솔에 인쇄됩니다. 그것은 어떤 일이 잘못 될지에 대한 힌트를 줄 수 있습니다 ... –