[SPRING] log4j : WARN web.xml에서 logger에 대한 appender를 찾을 수 없습니다.
SPRINGlog4j : WARN web.xml에서 logger에 대한 appender를 찾을 수 없습니다.
web.xml에 log4jConfigLocation을 이미 넣었지만 다음과 같은 경고 메시지가 표시됩니다.
log4j:WARN No appenders could be found for logger ⤦
⤥ (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
내가 놓친 게 무엇입니까?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>suara2</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>suara2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
해결법
-
==============================
1.그것이 전체 log4j.properties 파일이라면 실제로 로거를 생성하지 않는 것처럼 보입니다. 다음과 같은 라인이 필요합니다.
그것이 전체 log4j.properties 파일이라면 실제로 로거를 생성하지 않는 것처럼 보입니다. 다음과 같은 라인이 필요합니다.
log4j.rootLogger=debug,A1
-
==============================
2.클래스 패스의 올바른 위치에 log4j.properties가 있었지만이 경고는 여전히 직접 사용되었습니다. commons-logging을 통해 log4j를 사용하는 코드는 어떤 이유로 든 괜찮은 것 같습니다.
클래스 패스의 올바른 위치에 log4j.properties가 있었지만이 경고는 여전히 직접 사용되었습니다. commons-logging을 통해 log4j를 사용하는 코드는 어떤 이유로 든 괜찮은 것 같습니다.
당신이 가지고 있다면:
log4j.rootLogger=WARN
그것을 다음으로 변경하십시오 :
log4j.rootLogger=WARN, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
http://logging.apache.org/log4j/1.2/manual.html에 따르면 :
이것이 의미하는 것은 로깅이 발생하도록 루트 로거에 appender, appender를 지정해야한다는 것입니다.
rootLogger에 해당 콘솔 appender를 추가하면이 불만 사항이 사라집니다.
-
==============================
3.log4j.properties가 클래스 경로에없는 경우이 오류가 발생할 수 있습니다.
log4j.properties가 클래스 경로에없는 경우이 오류가 발생할 수 있습니다.
즉, log4j.properties를 src 폴더로 이동하고 출력을 bin 폴더로 설정하여 런타임에 log4j.properties가 bin 폴더에서 읽고 오류를 쉽게 해결할 수 있어야합니다.
-
==============================
4.log4j가 "log4j.properties"또는 "log4j.xml"파일을 찾을 수없는 경우이 경고가 표시됩니다.
log4j가 "log4j.properties"또는 "log4j.xml"파일을 찾을 수없는 경우이 경고가 표시됩니다.
-
==============================
5.또는 로그 구성 파일을로드하기 전에 내가 한 일을하고 로거를 정의 할 수 있습니다. 이것은 그들이 말한 것입니다 : "말 앞에 카트를 넣으십시오."
또는 로그 구성 파일을로드하기 전에 내가 한 일을하고 로거를 정의 할 수 있습니다. 이것은 그들이 말한 것입니다 : "말 앞에 카트를 넣으십시오."
코드에서 :
public static Logger logger = Logger.getLogger("RbReport");
... 나중에
PropertyConfigurator.configure(l4j); logger = Logger.getLogger("RbReport");
수정 사항은 구성이로드 된 후 로거를 초기화하는 것이 었습니다.
괴짜를 위해 그것은 "Descarte b4 d 말을 꼈다"이었다.
-
==============================
6.독립형 log4j 응용 프로그램을 구성하려면 BasicConfigurator를 사용할 수 있습니다. 이 솔루션은 Spring 환경과 같은 웹 애플리케이션에 적합하지 않습니다.
독립형 log4j 응용 프로그램을 구성하려면 BasicConfigurator를 사용할 수 있습니다. 이 솔루션은 Spring 환경과 같은 웹 애플리케이션에 적합하지 않습니다.
당신은 쓰기 -
BasicConfigurator.configure();
또는
ServletContext sc = config.getServletContext(); String log4jLocation = config.getInitParameter("log4j-properties-location"); String webAppPath = sc.getRealPath("/"); String log4jProp = webAppPath + log4jLocation; PropertyConfigurator.configure(log4jProp);
-
==============================
7.여전히 도움이된다면, 아카이브의 이름을 확인하십시오. 정확히 "log4j.properties"또는 "log4j.xml"(대소 문자 구분)이어야하고 "Alain O'Dea"의 힌트를 따라야합니다. 나는 같은 오류를 얻고 있었지만, 이러한 변경 사항을 수행 한 후에는 모든 것이 잘 작동합니다. 매력처럼 :-). 이것이 도움이되기를 바랍니다.
여전히 도움이된다면, 아카이브의 이름을 확인하십시오. 정확히 "log4j.properties"또는 "log4j.xml"(대소 문자 구분)이어야하고 "Alain O'Dea"의 힌트를 따라야합니다. 나는 같은 오류를 얻고 있었지만, 이러한 변경 사항을 수행 한 후에는 모든 것이 잘 작동합니다. 매력처럼 :-). 이것이 도움이되기를 바랍니다.
-
==============================
8.제 경우에는 솔루션이 쉬웠습니다. web.xml에 아무 것도 선언 할 필요가 없습니다.
제 경우에는 솔루션이 쉬웠습니다. web.xml에 아무 것도 선언 할 필요가 없습니다.
프로젝트가 웹 응용 프로그램이므로 배치 후에 구성 파일은 WEB-INF / classes에 있어야합니다. Java 리소스 폴더 (src / main / resources)를 만들어 (최선을 다해서) 할 것을 권장합니다. 또 다른 방법은 config 파일을 src / main / java에 넣는 것입니다.
구성 파일 이름을주의하십시오. XML을 사용하는 경우 파일 이름은 log4j.xml이며, 그렇지 않은 경우 log4j.properties입니다.
-
==============================
9.이 줄을 web.xml의 맨 앞에 놓습니다.
이 줄을 web.xml의 맨 앞에 놓습니다.
<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:/main/resources/log4j.xml</param-value> </context-param>
자세한 내용은이 링크를 참조하십시오. http : //mariemjabloun.blogspot.com/2014/04/resolved-log4jwarn-no-appenders-could.html
-
==============================
10.좋아, 나는 많은 답변과 매우 정확한 것을 볼 수있다. 그러나 아무도 내 문제를 해결하지 못했습니다. 내 경우의 문제는 root가 소유 한 서버에서 편집중인 log4j.properties 파일이 UNIX 파일 시스템 사용 권한이었습니다. 루트에서만 읽을 수 있습니다. 그러나 배포하고 있던 웹 응용 프로그램은 tomcat이 기본적으로 Linux 시스템에서 사용자 tomcat으로 실행되므로 tomcat에 파일을 읽을 수 없습니다. 희망이 도움이됩니다. 그래서 해결책은 log4j.properties 파일이 상주하는 디렉토리에 'chown tomcat : tomcat log4j.properties'를 입력하는 것입니다.
좋아, 나는 많은 답변과 매우 정확한 것을 볼 수있다. 그러나 아무도 내 문제를 해결하지 못했습니다. 내 경우의 문제는 root가 소유 한 서버에서 편집중인 log4j.properties 파일이 UNIX 파일 시스템 사용 권한이었습니다. 루트에서만 읽을 수 있습니다. 그러나 배포하고 있던 웹 응용 프로그램은 tomcat이 기본적으로 Linux 시스템에서 사용자 tomcat으로 실행되므로 tomcat에 파일을 읽을 수 없습니다. 희망이 도움이됩니다. 그래서 해결책은 log4j.properties 파일이 상주하는 디렉토리에 'chown tomcat : tomcat log4j.properties'를 입력하는 것입니다.
-
==============================
11.나는 똑같은 문제가 있었다. 동일한 구성 설정 및 동일한 경고 메시지 나를 위해 일한 것은 : 항목의 순서 변경.
나는 똑같은 문제가 있었다. 동일한 구성 설정 및 동일한 경고 메시지 나를 위해 일한 것은 : 항목의 순서 변경.
순서가 중요합니다.
-
==============================
12.web.xml에 log4jExposeWebAppRoot -> false를 추가하십시오. 그것은 나와 함께 작동 :)
web.xml에 log4jExposeWebAppRoot -> false를 추가하십시오. 그것은 나와 함께 작동 :)
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>path/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jExposeWebAppRoot</param-name> <param-value>false</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
-
==============================
13.이 줄을 xml 파일에 추가 할 수 있습니다.
이 줄을 xml 파일에 추가 할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
그리고 xml 파일이 src 폴더 아래에 있는지 확인하십시오.
from https://stackoverflow.com/questions/1266139/log4jwarn-no-appenders-could-be-found-for-logger-in-web-xml by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 보안에서 커스텀 역할 / 권한을 사용하려면 어떻게해야합니까? (0) | 2018.12.22 |
---|---|
[SPRING] Spring CORS 'Access-Control-Allow-Origin'헤더가 없습니다. (0) | 2018.12.22 |
[SPRING] @Transactional 어노테이션없이 다른 메소드를 호출하는 트랜잭션 메소드? (0) | 2018.12.22 |
[SPRING] Spring에서 현재 ApplicationContext 가져 오기 (0) | 2018.12.22 |
[SPRING] 데이터베이스에 의존하지 않고 스프링 - 부트 응용 프로그램을 시작하는 방법은 무엇입니까? (0) | 2018.12.22 |