【发布时间】:2023-04-06 12:19:01
【问题描述】:
无法创建日志文件。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>log4j-config-location</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
</web-app>
我已经在 WEB-INF 文件夹中创建了 log4j.xml。
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="debug" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %c{1}:%L %m %n" />
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="INFO" />
<param name="Threshold" value="debug" />
<param name="maxFileSize" value="20MB" />
<param name="maxBackupIndex" value="10" />
<param name="file" value="${catalina.home}/logs/myLog.log"/>
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %m %n" />
</layout>
</appender>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="info"></priority>
<appender-ref ref="fileAppender" />
</root>
</log4j:configuration>
下面是文件夹项目结构:
MyProject
src
web
WEB-INF
lib
web.xml,applicationContext.xml,log4j.xml,spring-config.xml...
任何建议都会有所帮助。我在 WEB-INF 文件夹中有一个文件,并且我已经在 web.xml 中给出了映射,如上所示,但是当 tomcat 服务器启动时,myLog.log 文件仍然没有创建。我需要添加一些东西吗?我注意到的一件事是 Log4jConfigListenner 是贬值类。我在类路径中有 log4j-1.2.17.jar 文件。我不想将日志文件保存在 src 文件夹中,我希望它位于 WEB-INF 文件夹中。
--编辑-- 我在web.xml中修改了监听器的声明顺序,但是仍然没有生成日志文件。
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
【问题讨论】:
-
我记得有一个 env 参数可以打开 log4j 启动的调试信息。它可能有助于您的诊断
-
stackoverflow.com/questions/3752921/… 首先确保加载了正确的文件。然后验证文件内容
-
@AdrianShum - 你能建议我上面提到的帖子中缺少的元素/代码是什么吗?
-
@AdrianShum - 我启动服务器时没有创建文件本身。我将 log4j.xml 保存在 web-inf 文件夹中,并在 web.xml 中给出了 log4j.xml 的路径
-
那么您确定 Log4J 已经在加载正确的文件了吗?
标签: java spring-mvc tomcat log4j