我在我的web應用程序中使用Log4j2進行日誌記錄。 如果我創建了任何簡單的java類並調用我的記錄器,它可以很好地工作,並將日誌打印到文件中。但是,如果我在servlet類中執行相同的操作,則不起作用。 正如文檔中所指定的,我沒有在web.xml中配置任何與log4j2相關的東西。在servlet 3.0中使用Log4j2
代碼的web.xml:在Servlet類
<?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文件,因爲我加入了這個文件放在classpath中,在我構建項目後它會自動添加到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