结合网络资料,官方文档,给出的一份log4j2的xml配置,详解。

结合网络资料,官方文档,给出的一份log4j2的xml配置。

很多配置项的官方文档地址有列出。注释中有些自己的理解,感觉不到位的地方请参靠官方文档。
还有很多没有用到的功能,希望以后有机会再好好研究吧

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--status="WARN" :用于设置log4j2自身内部日志的信息输出级别,默认是OFF-->
<!--monitorInterval="30"  : http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticReconfiguration 间隔秒数,自动检测配置文件的变更和重新配置本身 -->
<configuration status="debug" monitorInterval="30">
    <!--
    Properties:https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
    自定义一些常量,之后使用${变量名}引用-->
    <Properties>
        <!--项目的名称-->
        <Property name="projectName">currency_backstage</Property>
        <!--日志文件地址-->
        <Property name="logFilePath">logs</Property>
        <!--日志文件名称-->
        <Property name="logFileName">currency_backstage.log</Property>
        <!--错误日志文件地址-->
        <Property name="logErrorFilePath">logs/error</Property>
        <!--错误日志文件名称-->
        <Property name="logErrorFileName">currency_error_backstage.log</Property>
        <!--滚动文件地址-->
        <Property name="logRollingFilePath">logs/</Property>
        <!--滚动日志文件名称-->
        <Property name="logRollingFileName">currency_backstage.log</Property>
    </Properties>
    <!--
       appenders: https://logging.apache.org/log4j/2.x/manual/appenders.html#
        追加器 appenders于logger的关系,Log4j允许记录请求打印到多个目标。对log4j来说,输出目标称为Appender。
        一个Logger可以附加多个appender。
     -->
    <appenders>
        <!--console :https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender
            控制台输出的配置 SYSTEM_OUT标准输出(System.out) SYSTEM_ERR 标准错误输出(System.err)-->
        <console name="Console" target="SYSTEM_OUT">
            <!--PatternLayout :输出日志的格式 -->
            <PatternLayout
                    pattern="%highlight{%d [%t] %-5level [line-%L] [%C]: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
        </console>
        <!--File :https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender
                 同步输出日志到本地文件Log
                 name这个追加器的唯一表示
                 fileName文件名
                 append 是否追加输出,false的话每次启动项目都会先清空再输出-->
        <File name="LocalAllLog" fileName="${logFilePath}/${logFileName}" append="true">

            <!--PatternLayout : https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
                 输出日志的格式
                %style 样式
                %L 行号
                %highlight 高亮
                %d 日期
                %t 线程名
                %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
                %C%msg 消息
                %n 换行
                %throwable 抛出的异常信息
            -->
            <PatternLayout
                    pattern="[%style{%L}{Bright,blue}] %highlight{%d [%t] %-5level [%C]: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
        </File>
        <!--同上-->
        <File name="LocalErrorLog" fileName="${logErrorFilePath}/${logErrorFileName}" append="true">
            <!--同上-->
            <PatternLayout
                    pattern="%highlight{%d [%t] %-5level [line-%L] [%C]: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
            <!-- ThresholdFilter :https://logging.apache.org/log4j/2.x/manual/filters.html#ThresholdFilter
            阈值过滤,这个追加器主要目的,是输出错误的内容到一个单独日志,所以限制了只有Error才输出
                level 过滤器的级别
                onMatch 如果匹配的时候 ACCEPT接受
                onMismatch 不匹配的时候 DENY 拒绝。
                也可以灵活使用 onMatch的时候 DENY拒绝 不匹配的时候接受。看自己需求
              -->
            <ThresholdFilter level="Error" onMatch="ACCEPT" onMismatch="DENY"/>
        </File>


        <!--RollingFile:  https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender
                有时日志很多,所有内容都放在一个log文件里面不现实,为了归档,便于管理查看,此时可使用RollingFile.
            name:
            fileName: 日志名称,
            filePattern:  日志进行归档后,根据该范例命名,例:currency_backstage-2020-03-11-1.log。
                        (
                          %d{yyyy-MM}:日期与格式化。
                          %i计数器,从1开始。每归档一个文件则会加1.
                              我自己的测试的结果,归档文件数量到达上限后(DefaultRolloverStrategy的max参数配置,下面有),
                              计数器应该是维持最大值不变,会删除最早的文件,然后重新命名所有文件 。
                              例子,1.log 2.log 3.log,此时新增一个文件,会删除1.log 然后把2.log改为1.log、3.log改为2.log
                              最新的文件命名为3.log。
                          )
            -->
        <RollingFile name="RollingFileInfo" fileName="${logRollingFilePath}/${logRollingFileName}"
                     filePattern="${logRollingFilePath}/rolling/%d{yyyy-MM}/${projectName}-%d{yyyy-MM-dd}-%i.log">
            <!-- PatternLayout 日志输出格式 同上-->
            <PatternLayout
                    pattern="%highlight{%d [%t] %-5level [line-%L] [%C]: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
            <!-- Policies :日志滚动策略-->
            <Policies>
                <!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件, modulate="true" : 产生文件是否以0点偏移时间,6,12,18,0-->
                <!-- <TimeBasedTriggeringPolicy interval="6" modulate="true"/>-->
                <!-- SizeBasedTriggeringPolicy :文件大小滚动策略 超过100MB,则重命名原来的日志文件,归档。并生成新的日志文件用于log写入-->
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里可以任意设置 -->
            <DefaultRolloverStrategy max="3"/>
        </RollingFile>

        <!--SMTP :邮件发送日志 https://logging.apache.org/log4j/2.x/manual/appenders.html#SMTPAppender-->
        <!--        <SMTP name="Mail" subject="货币后台异常信息" to="message@message.info" from="message@lengjing.info" smtpUsername="message@message.info" smtpPassword="****" smtpHost="mail.*****.info" smtpDebug="false" smtpPort="25" bufferSize="10">-->
        <!--            <PatternLayout pattern="[%-5p]:%d{YYYY-MM-dd HH:mm:ss} [%t] %c{1}:%L - %msg%n" />-->
        <!--        </SMTP>-->
    </appenders>
    <!-- https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers 只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <!--Logger节点用来单独指定日志的形式,name为包路径,比如要为org.springframework包下所有日志指定为INFO级别等。 -->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <!-- 每个配置必须要有root-logger(root标签,如果未配置,将使用默认根LoggerConfig),Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出 -->
        <!-- ROOT-logger 于其他logger的区别是 1.root-logger没有名称属性。2.root-logger没有父项,因此不支持加性属性。-->
        <root level="INFO">
            <Appender-ref ref="Console"/>
            <!--<Appender-ref ref="LocalAllLog"/> 因为Rolling就可以满足我看日志的需求,就不再输出另一个本地文件了,以免重复-->
            <Appender-ref ref="LocalErrorLog"/>
            <Appender-ref ref="RollingFileInfo"/>
        </root>
        <!--AsyncLogger:https://logging.apache.org/log4j/2.x/manual/async.html 异步日志,LOG4J有三种日志模式,全异步日志,混合模式,同步日志,性能从高到底,线程越多效率越高,也可以避免日志卡死线程情况发生-->
        <!--additivity="false" : additivity设置事件是否在root logger输出,为了避免重复输出,可以在Logger 标签下设置additivity为”false-->
        <!--        <AsyncLogger name="AsyncLogger" level="WARN" includeLocation="true" additivity="false">-->
        <!--            <appender-ref ref="RollingFileError"/>-->
        <!--        </AsyncLogger>-->
    </loggers>
</configuration>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值