本篇文章小编给大家分享一下SpringBoot整合log4j2日志代码实现方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
关于日志级别
共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
All: 最低等级的,用于打开所有日志记录.
Trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.
Debug: 指出细粒度信息事件对调试应用程序是非常有帮助的.
Info: 消息在粗粒度级别上突出强调应用程序的运行过程.
Warn: 输出警告及warn以下级别的日志.
Error: 输出错误信息日志.
Fatal: 输出每个严重的错误事件将会导致应用程序的退出的日志.
OFF: 最高等级的,用于关闭所有日志记录.
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。
为什么选用log4j2
相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高于logback等10倍以上;利用jdk1.5并发的特性,减少了死锁的发生;
在这列举一下一些网上其他博文中对它们的性能评测:
可以看到在同步日志模式下, Logback的性能是最糟糕的.
log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的.
log4j2优越的性能其原因在于log4j2使用了LMAX,一个无锁的线程间通信库代替了,logback和log4j之前的队列. 并发性能大大提升。
排除 spring-boot 自带的 logback 依赖
因为多个日志组件在一起的话会产生冲突 需要排除 spring-boot 自带的 logback 依赖
pom.xml中原有的spring-boot-web 依赖中添加 exclusion标签
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging
添加 log4j2 依赖
不需要设置版本 会自动跟具当前 spring-boot 版本进行匹配
org.springframework.boot spring-boot-starter-log4j2
配置文件节点解析
根节点Configuration
有两个属性:status 和 monitorinterval ,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger)
status: 用来指定log4j本身的打印日志的级别. monitorinterval: 用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s
Appenders节点
常见的有三种子节点:Console、RollingFile、File.
Console节点用来定义输出到控制台的Appender.
name: 指定Appender的名字. target: SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT. PatternLayout: 输出格式,不设置默认为:%m%n.
File节点用来定义输出到指定位置的文件的Appender.
name: 指定Appender的名字. fileName: 指定输出日志的目的文件带全路径的文件名. PatternLayout: 输出格式,不设置默认为:%m%n.
RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.
name: 指定Appender的名字. fileName: 指定输出日志的目的文件带全路径的文件名. PatternLayout: 输出格式,不设置默认为:%m%n. filePattern: 指定新建日志文件的名称格式. Policies: 指定滚动日志的策略,就是什么时候进行新建日志文件输出日志. TimeBasedTriggeringPolicy: Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。 modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am…而不是7am. SizeBasedTriggeringPolicy: Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小. DefaultRolloverStrategy: 用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。
Loggers节点
常见的有两种:Root和Logger.
Root节点
用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
level: 日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
AppenderRef: Root的子节点,用来指定该日志输出到哪个Appender.
Logger节点
用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。
level: 日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
name: 用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
AppenderRef: Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。
配置 log4j2
将配置 log4j2.xml 配置文件放在 resource 目录中
例如以下完整的日志配置文件
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整