이미 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>
답변
이것이 전체 log4j.properties 파일이라면 실제로 로거를 생성하지 않는 것처럼 보입니다. 다음과 같은 줄이 필요합니다.
log4j.rootLogger=debug,A1
답변
클래스 경로의 올바른 위치에 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 에 따르면 :
루트 로거는 익명이지만 Logger.getRootLogger () 메서드를 사용하여 액세스 할 수 있습니다. 루트에 연결된 기본 어 펜더가 없습니다.
이것이 의미하는 바는 로깅이 발생하기 위해 루트 로거에 일부 appender, any appender를 지정해야한다는 것입니다.
해당 콘솔 어 펜더를 rootLogger에 추가 하면이 불만이 사라집니다.
답변
log4j.properties
클래스 경로에없는 경우이 오류가 발생할 수 있습니다 .
즉 log4j.properties
,을 src 폴더로 이동하고 출력을 bin 폴더로 설정해야 런타임 log4j.properties
에 bin 폴더에서 읽을 수 있고 오류가 쉽게 해결됩니다.
답변
log4j가 “log4j.properties”또는 “log4j.xml”파일을 어디에도 찾을 수없는 경우이 경고가 표시됩니다.
답변
또는 로그 구성 파일이로드되기 전에 내가 한 작업을 수행하고 로거를 정의 할 수 있습니다. 이것은 그들이 말하는 것과 같습니다 : “말 앞에 카트를 넣기.”
코드에서 :
public static Logger logger = Logger.getLogger("RbReport");
… 나중에
PropertyConfigurator.configure(l4j);
logger = Logger.getLogger("RbReport");
구성이로드 된 후 로거를 초기화하는 문제를 수정했습니다.
괴짜들에게는 “Putting Descarte b4 d horse”였습니다.
답변
독립형 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);
답변
여전히 도움이된다면 아카이브의 이름을 확인하고 정확한 “log4j.properties”또는 “log4j.xml”(대소 문자 구분)이어야하며 “Alain O’Dea”의 힌트를 따르십시오. 나는 같은 오류가 발생했지만 이러한 변경을 한 후에는 모든 것이 잘 작동합니다. 마치 매력처럼 :-). 도움이 되었기를 바랍니다.