Linux上springmvc项目log4j文件不输出异常

本地测试时能够打印error日志,但是在linux上error日志只会自动创建但是没有内容,debug日志也只有tomcat开启的信息,当项目运行时内容也不会增加。

log4j配置代码
<?xml version="1.0" encoding="UTF-8"?>    
<configuration status="ERROR">  
<!--     先定义所有的appender -->  
    <appenders>  
<!--         这个输出控制台的配置 -->  
        <Console name="Console" target="SYSTEM_OUT">  
<!--             控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->  
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>  
<!--             这个都知道是输出日志的格式 -->  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </Console>  

<!--         文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->  
<!--         append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->  
        <File name="log" fileName="/root/log/test.log" append="false">  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </File>  

<!--          添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->  
        <File name="ERROR" fileName="/root/log/log.log">  
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>  
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </File>  

<!--         这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->  
        <RollingFile name="RollingFile" fileName="/root/log/web.log"  
                     filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">  
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
            <SizeBasedTriggeringPolicy size="2MB"/>  
        </RollingFile>  
    </appenders>  

<!--     然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->  
    <loggers>  
<!--         建立一个默认的root的logger -->  
        <root level="trace">  
            <appender-ref ref="RollingFile"/>  
            <appender-ref ref="Console"/>  
            <appender-ref ref="ERROR" />  
            <appender-ref ref="log"/>  
        </root>  

    </loggers>  
</configuration>  
//
web.xml配置情况
   <listener>
         <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>
     <filter>
         <filter-name>log4jServletFilter</filter-name>
         <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
     </filter>
     <filter-mapping>
         <filter-name>log4jServletFilter</filter-name>
         <url-pattern>/*</url-pattern>
         <dispatcher>REQUEST</dispatcher>
         <dispatcher>FORWARD</dispatcher>
         <dispatcher>INCLUDE</dispatcher>
         <dispatcher>ERROR</dispatcher>
     </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

clipboard.png

阅读 3k
1 个回答

你试试把

<configuration status="ERROR">
改成
<configuration status="DEBUG">
将会有更多有关log4j配置的信息输出到命令行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题