내 웹 응용 프로그램에서 로깅 목적으로 Log4j2를 사용하고 있습니다. 간단한 자바 클래스를 만들고 내 로거를 호출하면 완벽하게 작동하고 파일에 로그를 인쇄합니다. 그러나 서블릿 클래스에서 동일한 작업을 수행하면 작동하지 않습니다. 설명서에 지정된대로 web.xml의 log4j2와 관련된 항목을 구성하지 않았습니다. web.xml을위한서블릿 3.0의 Log4j2 사용
코드 : 서블릿 클래스의
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>SampleWebApp</display-name>
<welcome-file-list>
<welcome-file>Welcome.jsp</welcome-file>
</welcome-file-list>
</web-app>
로깅 코드 :이 추가 한 이후
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log=LogManager.getLogger(MyServlet.class);
내가 명시 적으로, WEB-INF 폴더에 log4j2.xml 파일을 배치하지 않은 클래스 패스에있는 파일은 자동으로 프로젝트를 빌드 한 후 WEB-INF/classes에 추가됩니다.
일부 구성이 누락 되었습니까? 코드의
라인 :
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
log.error("i am inside servlet");
/*response.getWriter().append("Served at: ").append(request.getContextPath());*/
System.out.println("GET called");
}
log4j2.xml :
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" filename="C:/Users/jasleen_kathuria/Documents/logs/info.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<logger name="MyServlet" level="TRACE">
<AppenderRef ref="MyFile"/>
</logger>
</Loggers>
"작동하지 않습니다."여전히 SA에서 가장 좋은 오류 설명입니다 ... 오류가 무엇인지 알 수 있습니까? 컴파일러 오류, 런타임 오류 또는 로거가 로그 파일에 액세스 할 수없는 경우 서버에서 로그 파일을 찾을 수 없습니까? :) – xander
이것은 이상하지만 나는 어떤 오류도 내지 않고있다! 로그가 생성되지 않는다는 것입니다. –
패키지의 MyServlet 클래스입니다. 그렇다면 _full name_을 로거 구성에 넣어야합니다. – minus