老蔡的个人专栏正式成立,以后工作中遇到的技术问题,或者生活中对一些事物的见解,都会和大家分享!独乐乐不如众乐乐!

Log4j2 的配置使用说明

网站部署 BlandonTsai 2447℃ 0评论

最近项目中有使用到 Spring4.3 的高版本框架,跟以前的 Spring3.x 版本在日志管理这一块有区别的地方,就是高版本不再提供对 Log4j 1.x 的支技。按照官方的建议和说明,以及的网友的反馈情况来看,普遍认为 Log4j2 要比 Log4j1 的性能更加优越,高效。也许不久,Log4j2 会成为众多开发人员的首选。

配置文件的名称及文件格式

Log4j 2.x版本不再支持像1.x中的 .properties 后缀的文件配置方式,2.x版本配置文件后缀名只能为“.xml”,“.json”或者“.jsn”。

系统选择配置文件的优先级(从先到后)如下:

(1).classpath下的名为 log4j2-test.json 或者 log4j2-test.jsn 的文件
(2).classpath下的名为 log4j2-test.xml 的文件
(3).classpath下名为 log4j2.json 或者 log4j2.jsn 的文件
(4).classpath下名为 log4j2.xml 的文件

我们一般默认使用 log4j2.xml 进行命名。如果本地要测试,可以把 log4j2-test.xml 放到 classpath,而正式环境使用 log4j2.xml,则在打包部署的时候不要打包 log4j2-test.xml 即可。

Log4j2 默认的配置文件

配置文件属性说明

Configuration

有两个属性:status 和 monitorInterval

status 用来指定log4j本身的打印日志的级别;
monitorInterval 用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s。

有三个子节点:Properties 、Appenders 和 Loggers

Properties

可以配置一些常量目录,如日志文件的输出目录:

Appenders

常见的子节点有三个:Console 、File 和 RollingFile

Console 结点用来定义输出到控制台的appender,target 属性为 SYSTEM_OUT 或者 SYSTEM_ERR,一般只设置默认 SYSTEM_OUT。

File 结点用来定义输出到指定位置文件的appender,fileName 属性指定输出目录的全路径文件名称。

RollingFile 结点用来定义超过指定大小自动生成新的日志文件的appender:

fileName:指定输入目录的全路径文件名称;
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个级别;
appender-ref:Root的子节点,用来指定该日志输出到哪个Appender。

Logger 节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

level:日志输出级别,共有8个级别;
name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点;
appender-ref:Logger的子节点,用来指定该日志输出到哪个Appender。如果没有指定,就会默认继承自Root;如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity=”false”只在自定义的Appender中进行输出。

日志输出级别Level

共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF。

All:最低等级的,用于打开所有日志记录;
Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出;
Debug:指出细粒度信息事件对调试应用程序是非常有帮助的;
Info:消息在粗粒度级别上突出强调应用程序的运行过程;
Warn:输出警告及warn以下级别的日志;
Error:输出错误信息日志;
Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志;
OFF:最高等级的,用于关闭所有日志记录。

程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。

Log4j2 使用方式

我们知道,要在某个类中使用 log4j 记录日志,只需要申明下面的成员变量(其实不一定要是成员变量,只是为了方便调用而已)。log4j 2.0的使用非常简单,只要用 LogManager 的 getLogger 函数获取一个logger,就可以使用logger记录日志。

配置文件范例

%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间
%p : 日志输出格式
%c : logger的名称
%m : 日志内容,即 logger.info(“message”)
%n : 换行符
%C : Java类名
%L : 日志输出所在行数
%M : 日志输出所在方法名
hostName : 本地机器名
hostAddress : 本地ip地址

转载请注明:似水流年 » Log4j2 的配置使用说明

如果觉得文章还不错,欢迎打赏
喜欢 (0)or分享 (0)
发表我的评论
取消评论


(1)个小伙伴在吐槽
  1. :write: :baby: :jue: :dai:
    匿名2017-09-14 17:51 回复