spring5.1.8版ssm环境下配置log4j2记录日志

日前用spring5.1.8版本的ssm写项目发现以前的log4j用不了。
原来spring5.0开始spring 废弃了Log4jConfigListener这个类 所以web.xml 里配置的log监听Log4jConfigListener找不到类了。
spring建议用log4j2 来替换这个类。
以下是log4j2的配置方法:
一、引入全新的log4j2 依赖jar包

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.12.1</version>
        </dependency>

在maven仓库里可以看到这个jar包会自动依赖
org.apache.logging.log4j» log4j-api
org.apache.logging.log4j » log4j-core


深度截图_选择区域_20190813225100.png

所以只引入这一个依赖maven就会自动下载另外两个。
web.xml配置如下:

<!-- log4j2-begin -->
     <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>
     <!-- log4j2-end -->

src/main/resources`目录下新增log4j2.xml 文件,这个文件名是官方默认的

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF" monitorInterval="1800">
    <properties>
        <property name="LOG_HOME">/home/zhaohy/tomcat/logs</property>
        <property name="FILE_NAME">MyBlog</property>
    </properties>


    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <RollingFile name="running-log" fileName="${LOG_HOME}/${FILE_NAME}.log"
            filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz"
            immediateFlush="true">
            <PatternLayout
                pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
    <Loggers>

         <Logger name="com.zhaohy.app" level="debug" additivity="true"> 
            <AppenderRef ref="running-log" /> 
            <!-- 这里是输入到控制台-->
            <AppenderRef ref="Console" />
          </Logger> 

        <Root level="info">
               <!-- 这里是输入到文件,很重要-->
            <AppenderRef ref="running-log" />
            <!-- 这里是输入到控制台-->
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

这个时候启动项目日志文件已经写入了/home/zhaohy/tomcat/logs/MyBlog.log这个文件中,
sql日志会显示com.zhaohy.app文件夹下所有的debug日志。

不放心也可以写个测试类测试一下:


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class TestLog4j2 {
     static Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

 public static void main(String[] args) {
         logger.trace("trace message");
         logger.debug("debug message");
         logger.info("info message");
         logger.warn("warn message");
         logger.error("error message");
         logger.fatal("fatal message");
         System.out.println("Hello World!");
     }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容