java - 尽管保留了所有内容,但无法使用 log4j 生成日志文件

标签 java spring-mvc tomcat log4j

无法创建日志文件。

网络.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>

最佳答案

查看web.xml中监听器的顺序 在 Log4jConfigListener javadoc 上指定:

This listener should be registered before ContextLoaderListener in web.xml when using custom log4j initialization.

关于java - 尽管保留了所有内容,但无法使用 log4j 生成日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45364180/

相关文章:

hibernate - 关于 JPA persistence.xml

java - JFrame 背景图片

java - JSON 处理linkedHashMap

c# - 什么时候应该使用链接列表的真实世界示例是什么?

java - 春java.lang.IllegalStateException : Cannot create a session after the response has been committed

Spring 安全 : Authenticate against multiple LDAP servers & DAO-based authentication

java - Tomcat 中的数据源注入(inject)问题

java - 为什么在 JSTL el 表达式中转义引号时出现 JSP 错误 "attribute for "未正确终止?

Java 图形用户界面和线程

java - 我正在构建的简单 Android 应用程序遇到问题,但我无法弄清楚