log4j2配置文件的故事

从前有个老头叫<configuration>,他有两个儿子,忠厚老实的老大叫<appenders>,
并且<appenders>有三个儿子,分别叫<console>,<File>和<RollingFile>。这三个都是比较有才华的小伙子。
另一个处事圆滑的老二叫<loggers>,年轻时放荡不羁,留恋纸醉迷金的生活,至今没有成家,但是长时间混迹在大城市中的他,倒也有些名气,好多人偷偷送礼托他办事。
这是家谱:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

        <appenders>
            <File></File>
            <console></console>
            <RollingFile></RollingFile>
        </appenders>
    
        <loggers>
        </loggers>

</configuration>

我们来详细介绍一下

老头configuration

<configuration status="OFF" monitorInterval="30">
</configuration>

status:
这是日志自身的日志。一般写off,代表关闭不显示。

八个日志级别以及优先级排序: OFF(关闭) > FATAL(致命的) > ERROR > WARN > INFO > DEBUG > TRACE(堆栈) >

monitorInterval:
刷新此文件的时间间隔,保证修改后的文件及时生效。

大孙子<console>

    <console name="Console" target="SYSTEM_OUT">

        <!--输出日志的格式-->

        <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

    </console>

很显然配置这个是大孙子能够将日志输出至控制台。

二孙子<File>

    <File name="log" fileName="log/test.log" append="false">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
    </File>

二孙子的擅长将日志写在指定文件夹下的文件里。
fileName:
是生成的日志文件路径加名称以及后缀名, log/test.log指在跟目录log文件夹下的test.log
append:
的值为Bollean类型,当为true的时候 ,日志会追加,否则将覆盖。

小孙子<RollingFile>

    <RollingFile name="RollingFileInfo" fileName="logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
    
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        
        <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        
        <Policies>
        
            <TimeBasedTriggeringPolicy/>

            <SizeBasedTriggeringPolicy size="100 MB"/>

        </Policies>

    </RollingFile>

SizeBasedTriggeringPolicy:一个小孙子的大小,
<ThresholdFilter level:日志级别。
小孙子擅长将老头子教的八个日志级别分类保存文件里,小孙子可以有多个,一个负责一个级别的日志,至于为什么小孙子可以有多个?这不合情理?,因为他是孙悟空啊。

老头子见到三个孙子各个身怀绝技了,该去大城市闯荡闯荡了,但是他们的爹<appenders>,虽然稳重能干,但是对大城市的情况时一无所知。所以必须让老二<loggers>来帮这三个孙子指路。

在将要踏上去大城市的路上之前,二孙子<File>突然改变了想法,他认为不去大城市也能做出成绩。

老二<loggers>:

老二<loggers>让他的助理<root>老司机,负责带<Console>和<RollingFileInfo>飞。

<loggers>

    <root level="all">

        <appender-ref ref="Console"/>

        <appender-ref ref="RollingFileInfo"/>

    </root>

</loggers>

后来,<console>和<RollingFile>在二叔的得力助手<root>的指引下,为祖国的建设做的了巨大的贡献。正如<File>所说,<File>虽然没有二叔的指导,但是也做出了不小的成就。

下面是完整版

<?xml version="1.0" encoding="UTF-8"?>

<!--日志级别以及优先级排序: OFF(关闭) > FATAL(致命的) > ERROR > WARN > INFO > DEBUG > TRACE(堆栈) > ALL -->

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

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

<configuration status="OFF" monitorInterval="30">

    <!--先定义所有的appender-->

    <appenders>

        <!--这个输出控制台的配置-->

        <console name="Console" target="SYSTEM_OUT">

            <!--输出日志的格式-->

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

        </console>

 from:https://segmentfault.com/a/1190000011094806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值