Log4j 2配置指南

网友投稿 1407 2022-10-08

Log4j 2配置指南

Log4j 2配置指南

前言

log4j2有8个级别,从低到高为

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

作用如下

等级

描述

All

最低等级的,用于打开所有日志记录

TRACE

追踪,就是程序运行到哪了

DEBUG

指出细粒度信息事件对调试应用程序是非常有帮助的

INFO

消息在粗粒度级别上突出强调应用程序的运行过程

WARN

输出警告

ERROR

输出错误信息日志

FATAL

输出每个严重的错误事件将会导致应用程序的退出的日志

OFF

最高等级的,用于关闭所有日志记录

程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 先看一个最简单的,log4j2.xml

这个配置文件主要是把程序运行过程中error级别的日志打印到控制台

根标签Configuration常用的子标签为Properties,Appenders,Loggers

Configuration常用属性

描述

monitorInterval

假设这个值是10,则每隔10秒重新读取配置文件,动态的更改配置

status

设置log4j2自身内部的信息输出

Appenders标签常用的子标签为Console,File,RollingFile

Console代表向控制台打印日志 RollingFile会根据具体的生成策略重新生成日志文件,如日志大小到了指定大小,或者到了指定时间

Console常用属性

描述

name

Appender的名字

target

Either “SYSTEM_OUT” or “SYSTEM_ERR”. The default is “SYSTEM_OUT”

File常用属性

描述

name

Appender的名字

fileName

The name of the file to write to. If the file, or any of its parent directories, do not exist, they will be created.

append

值为false,则每次清空文件,为true则追加到文件,默认为true

RollingFile常用属性

描述

fileName

The name of the file to write to. If the file, or any of its parent directories, do not exist, they will be created.

filePattern

The pattern of the file name of the archived log file(归档日志文件的文件名的模式)

SizeBasedTriggeringPolicy常用属性

描述

size

文件多大时开始翻转,后缀可为KB, MB or GB

TimeBasedTriggeringPolicy 常用属性

描述

interval

根据filePattern的最小粒度,设置翻转策略

modulate

在区间边界上翻转,值为boolean类型

maxRandomDelay

随机延迟翻转的最大秒数,默认是0,表示没有延迟

DefaultRolloverStrategy 常用属性

描述

min

计数器的最小值,默认是1

max

计数器的最大值。一旦达到这个值,旧文件将在后续翻转中删除。默认值为7

Loggers标签常用的子标签为Root,Logger,Root标签用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

Logger常用属性

描述

name

可以为随便起的名字,如果想指定某个包或者某个类的打印策略,则为包名或者全类名

level

日志打印级别

如果Logger没有指定level属性,就会默认继承自Root Root标签和Logger标签常用的子标签为AppenderRef

AppenderRef 常用属性

描述

ref

指定日志输出的Appender

如果Logger没有指定AppenderRef ,就会默认继承自Root。如果指定了,就会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity=false只在自定义的Appender中进行输出

再介绍一个常用的过滤器标签ThresholdFilter

ThresholdFilter常用属性

描述

level

日志级别

onMatch

Action to take when the filter matches. May be ACCEPT, DENY or NEUTRAL. The default value is NEUTRAL

onMismatch

Action to take when the filter does not match. May be ACCEPT, DENY or NEUTRAL. The default value is DENY

这里说一下可选值ACCEPT, DENY, NEUTRAL,ACCEP和DENY比较好理解就是接受和拒绝的意思,在使用单个过滤器的时候,一般就是使用这两个值。但是在组合过滤器中,如果用接受ACCEPT的话,日志信息就会直接写入日志文件,后续的过滤器不再进行过滤。所以,在组合过滤器中,使用NEUTRAL(中立的),被第一个过滤器接受的日志信息,会继续用后面的过滤器进行过滤,只有符合所有过滤器条件的日志信息,才会被最终写入日志文件。

常用模板

我们在项目中一般不直接使用Log4j2而是SLF4J。SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类,SLF4J类似JDBC,这样我们可以轻松更改日志的实现,一般在pom文件中加入如下即可

org.apache.logging.log4j log4j-core 2.6.2 org.apache.logging.log4j log4j-api 2.6.2 org.slf4j slf4j-api 1.7.13 org.apache.logging.log4j log4j-slf4j-impl 2.5 org.projectlombok lombok 1.16.18

lombok是一个神奇插件,在类上加上@Slf4j 注解,就相当于在类中加入如下代码

importimportprivate Logger log = LoggerFactory.getLogger(类名.class);

将指定包或者指定类的日志打印到特定文件

设置Logger标签的name属性为包名或者全类名,即可把日志打到相应的文件中

%d{HH:mm:ss.SSS} |-%5level %logger{20} [%t] |%X{ip} - %msg%n %d{yyyy-MM-dd HH:mm:ss.SSS} |-%5level %logger{20} [%t] %X{ip} - %msg%n ./logs debug ${consolePattern}

将不同级别的日志打印到特定文件

主要思路是,首先要过滤不符合的日志级别,把不需要的首先DENY掉,然后再ACCEPT需要的日志级别,这个次序不能颠倒

%d{HH:mm:ss.SSS} |-%5level %logger{20} [%t] |%X{ip} - %msg%n %d{yyyy-MM-dd HH:mm:ss.SSS} |-%5level %logger{20} [%t] %X{ip} - %msg%n ./logs debug ${consolePattern}

这个是把不同level的日志写到相应的文件中,并把所有日志写到logFile文件中

按时间或者大小归档

%d{HH:mm:ss.SSS} |-%5level %logger{20} [%t] |%X{ip} - %msg%n %d{yyyy-MM-dd HH:mm:ss.SSS} |-%5level %logger{20} [%t] %X{ip} - %msg%n ./logs debug ${consolePattern} ${filePattern} -->

每天零点归档日志,文件名类似如下server-2018041123.log.gz,当日志达到30个以后,删除以前的日志

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序关于三级联动选择器如何使用(小程序多级联动选择)
下一篇:微信小程序开发之顶部导航栏实例(小程序顶部导航栏按钮)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~