前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SSM项目配置Log4j2

SSM项目配置Log4j2

作者头像
别团等shy哥发育
发布于 2023-02-25 08:51:32
发布于 2023-02-25 08:51:32
62500
代码可运行
举报
运行总次数:0
代码可运行

SSM项目配置Log4j2

前言:

在Spring5.x版本之后,原来的Log4j有很多东西废弃了,所以改用log4j2

1、在pom.xml中导入依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	 <!--测试日志打印-->
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.10.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.10.0</version>
    </dependency>

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

2、Web.xml配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--日志相关-->
  <context-param>
    <!--log4j配置文件地址-->
    <param-name>log4jConfiguration</param-name>
    <param-value>classpath:log4j2.xml</param-value>
  </context-param>
	<listener>
    <!--日志相关-->
    <!-- Log4j的监听器要放在spring监听器前面 -->
    <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>

3、在resources目录下面新建log4j2.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>

<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->

<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->

<configuration status="TRACE" monitorInterval="30">
    <properties>
        <!-- 下面这二行随意,sys:catalina.home为tomcat的路径,这里的opms只是我项目的名字  -->
         <property name="LOG_HOME">${sys:catalina.home}/logs</property>
        <property name="FILE_NAME">opms</property>
    </properties>
    <!--先定义所有的appender-->
    <appenders>
        <!--控制台日志-->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>
        <!--输出到文件,其中有一个append属性,默认为true,即不清空原来的信息,采用添加的方式,若设为false,则会先清空原来的信息,再添加-->
        <File name="SqlFile" fileName="${LOG_HOME}/${FILE_NAME}/sql.log" append="true">
            <PatternLayout>
                <!--配置日志信息的格式 -->
                <pattern>%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
            </PatternLayout>
        </File>
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
        <File name="log" fileName="${LOG_HOME}/${FILE_NAME}/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--info日志-->
        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/${FILE_NAME}/info.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}/log/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
        </RollingFile>

        <!--warn日志-->
        <RollingFile name="RollingFileWarn" fileName="${LOG_HOME}/${FILE_NAME}/warn.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">

            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>

        <!--error日志-->
        <RollingFile name="RollingFileError" fileName="${LOG_HOME}/${FILE_NAME}/error.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>

    </appenders>

    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <!--打印sql信息-->
        <logger name="com.ssm.dao" level="DEBUG">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="SqlFile"/>
        </logger>

        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>

        <!--正式环境下改为info级别-->
        <root level="all">
            <!--Info输出到文件-->
            <appender-ref ref="RollingFileInfo"/>
            <!--Warn输出到文件-->
            <appender-ref ref="RollingFileWarn"/>
            <!--Error输出到文件-->
            <appender-ref ref="RollingFileError"/>
            <!--sql输出到文件-->
            <appender-ref ref="SqlFile"/>

            <!--正式环境下面两项删除-->
            <!--输出到控制台-->
            <appender-ref ref="Console"/>
        </root>

    </loggers>

</configuration>
<!--
error > warn > info > debug
这里是做了日志的分级别存储,例如 warn-log 中 配置为
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>  
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>

表示 如果出现error 的日志 因为 error > warn 所以这个也会记录error级别的日志,所以配置了上面表示不记录error的日志,
由于info ,debug 均小于 warn 所以不会记录,
-->

${sys:catalina.home}为tomcat的路径

4、写个测试类测试日志打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ssm.test;


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!");
    }
}

可以看到控制台和文件都有了日志的输出

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Log4j2_学习_01_Log4j 2使用教程
 一、推荐使用的log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <!-- 设置log4j2的自身log级别为warn --> <!-- OFF >
shirayner
2018/08/10
3480
Springboot整合log4j2(按级别拆分)
创建log4j2.xml文件,放在工程resources目录里。这样就可以不加任何配置。如果你需要指定配置文件需要在Spring boot 配置文件application.yml中指定 logging.config 属性。
鱼找水需要时间
2023/02/16
6710
Springboot整合log4j2(按级别拆分)
spring整合log4j_spring整合log4j
log4j、log4j2(log4j的升级版,最常用的)、logback(spring boot默认)、Jboss-logging…等
全栈程序员站长
2022/09/22
1640
springboot整合篇-springboot整合log4j2
log4j2设计之初是为了审计,log4j2是log4j 1.x 的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升。
Java开发者之家
2021/06/17
6400
springboot 整合log4j2 记录
很少写博客;看了很多网上的教程,自己也试过了很多,有些问题也记录下来了希望能帮到其他朋友。
用针戳左手中指指头
2021/01/29
8420
springboot 整合log4j2 记录
Springboot中slf4j+log4j2的使用
但是我可以让slf4j来做,slf4j是多个日志框架的上层,大家都基于slf4j来做.
玖柒的小窝
2021/09/14
1.1K0
Springboot中slf4j+log4j2的使用
log4j2配置文件的故事
从前有个老头叫<configuration>,他有两个儿子,忠厚老实的老大叫<appenders>, 并且<appenders>有三个儿子,分别叫<console>,<File>和<RollingFile>。这三个都是比较有才华的小伙子。 另一个处事圆滑的老二叫<loggers>,年轻时放荡不羁,留恋纸醉迷金的生活,至今没有成家,但是长时间混迹在大城市中的他,倒也有些名气,好多人偷偷送礼托他办事。 这是家谱:
Mshu
2018/10/31
7540
IDEA配置Log4j2日志框架(非Maven)
不过我们要对Log4j2进行一定的配置才可以让他数据更加详细和符合要求,我们在src下新建一个log4j2.xml文件。
JanYork_简昀
2022/03/30
1.3K0
IDEA配置Log4j2日志框架(非Maven)
SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。
知了一笑
2019/07/19
2.3K1
SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
log4j2.xml放在哪里_log4j2配置文件详解
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说log4j2.xml放在哪里_log4j2配置文件详解,希望能够帮助大家进步!!!
Java架构师必看
2022/07/19
3.2K0
maven中slf4j+log4j的使用
0.背景 参考这篇 Springboot中slf4j+log4j2的使用 1.导入pom <!-- 日志相关 - Start --> <!-- slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </d
玖柒的小窝
2021/09/14
1K0
第十一节:Springboot整合log4j2日志
SpringBoot默认使用的是logback, 但是还有一个性能更高的日志实现框架log4j2. 为什么选用log4j2 相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高于logback等10倍以上;利用jdk1.5并发的特性,减少了死锁的发生; 下面是来自网络上一张性能对比图片 [img] 同步日志模式下, Logback的性能是最糟糕的,log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的 log4j2性能高的主要原因是它用了一个LMAX无
入门笔记
2022/02/14
2970
第十一节:Springboot整合log4j2日志
Springboot整合log4j2日志全解
上述介绍的是一些日志框架的实现,这里我们需要用日志门面来解决系统与日志实现框架的耦合性。SLF4J,即简单日志门面(Simple Logging Facade for Java),它不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志实现。
用户1212940
2020/07/10
5.6K0
Springboot整合log4j2日志全解
聊一聊log4j2配置文件log4j2.xml
  最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方案)以及log4j2配置文件的详解,就需要我们来好好聊一聊了。本文就专门来讲解下log4j2.xml配置文件的各项标签的意义。
阿豪聊干货
2018/08/09
6.2K0
spring引入log4j2日志框架
Log4j2是Apache的一个开源项目,通过使用Log4j2,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
逍遥壮士
2020/09/18
1.7K0
spring引入log4j2日志框架
Spring Boot 2 集成log4j2日志框架
Log4j2是 Log4j 的进化版本,并提供了许多 Logback 可用的改进,同时解决了 Logback 体系结构中的一些固有问题。而且日志处理中我们会用到kafka作为日志管道。而kafka客户端依赖与Logback的兼容不是很完美,你可以选择排除依赖冲突或者使用Log4j2 。
码农小胖哥
2019/12/05
7670
Springboot 整合 log4j2 日志详解
在项目推进中,如果说第一件事是搭 Spring 框架的话,那么第二件事情就是在 Sring 基础上搭建日志框架,我想很多人都知道日志对于一个项目的重要性,尤其是线上 Web 项目,因为日志可能是我们了解应用如何执行的唯一方式。
JavaFish
2020/01/02
1.2K0
slf4j 搭配 log4j2 处理日志
Log4j + Slf4j 的使用组合最为常见,但是我们知道 Log4j 目前已经停止更新了。Apache推出了新的 Log4j2 来代替 Log4j,Log4j2 是对Log4j 的升级,与其前身 Log4j 相比有了显着的改进,并提供了许多 Logback 可用的改进,同时解决了 Logback 体系结构中的一些固有问题。因此,Log4j2 + Slf4j 应该是未来的大势所趋。
海向
2019/09/23
9000
Log4j2 日志
Apache Log4j2 是 Log4j 的升级,对其前身 Log4j 1.x进行了重大改进,并提供了Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。
JanYork_简昀
2022/05/23
3680
Log4j2 日志
Log4j2日志 不健全
特殊说明: 第三方平台不会及时同步本文章最新内容,如果觉得本文资料不全,可以访问本人Java博客搜索:标题类似的关键字 上述文章均是我实际操作后产出,烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
收心
2023/02/22
5450
相关推荐
Log4j2_学习_01_Log4j 2使用教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文