
Log4j 2配置指南
前言
以前都是直接在项目中使用网上的log4j2.xml,大概能用就行,结果用Storm的时候,项目中的log4j2.xml文件失效,必须在Storm目录的配置文件中配置,就学习了一波,分享一下
log4j2有8个级别,从低到高为
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少
先看一个最简单的,log4j2.xml
这个配置文件主要是把程序运行过程中error级别的日志打印到控制台
根标签Configuration常用的子标签为Properties,Appenders,Loggers
Console代表向控制台打印日志
RollingFile会根据具体的生成策略重新生成日志文件,如日志大小到了指定大小,或者到了指定时间
翻转策略常用的一些标签
Loggers标签常用的子标签为Root,Logger,Root标签用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root进行日志输出
如果Logger没有指定level属性,就会默认继承自Root
Root标签和Logger标签常用的子标签为AppenderRef
如果Logger没有指定AppenderRef ,就会默认继承自Root。如果指定了,就会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity=false只在自定义的Appender中进行输出
再介绍一个常用的过滤器标签ThresholdFilter
这里说一下可选值ACCEPT, DENY, NEUTRAL,ACCEP和DENY比较好理解就是接受和拒绝的意思,在使用单个过滤器的时候,一般就是使用这两个值。但是在组合过滤器中,如果用接受ACCEPT的话,日志信息就会直接写入日志文件,后续的过滤器不再进行过滤。所以,在组合过滤器中,使用NEUTRAL(中立的),被第一个过滤器接受的日志信息,会继续用后面的过滤器进行过滤,只有符合所有过滤器条件的日志信息,才会被最终写入日志文件
常用模板
我们在项目中一般不直接使用Log4j2而是SLF4J。SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类,SLF4J类似JDBC,这样我们可以轻松更改日志的实现,一般在pom文件中加入如下即可
lombok是一个神奇插件,在类上加上@Slf4j 注解,就相当于在类中加入如下代码,特别方便,还有其他特别方便的注解,可以参考其他文章安装和学习一下
将指定包或者指定类的日志打印到不同文件
设置Logger标签的name属性为包名或者全类名,即可把日志打到相应的文件中
将不同级别的日志打印到不同文件
主要思路是,首先要过滤不符合的日志级别,把不需要的首先DENY掉,然后再ACCEPT需要的日志级别,这个次序不能颠倒
按时间或者大小归档
每天零点归档日志,文件名类似如下server-2018041123.log.gz,当日志达到30个以后,删除以前的日志
文章转载自公众号:Java识堂
