log4f2详细配置

本文介绍了log4j2在SpringBoot项目中的详细配置,包括Configuration节点的status和monitorinterval属性,以及Appenders(Console、RollingFile、File)和Loggers(Root、Logger)的配置。讲解了不同类型的Appender用途,如控制台输出、文件输出和按大小滚动的文件输出。同时,文章还提到了日志级别及其顺序,并给出了一个具体的日志格式配置实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

log4j2节点详细配置

参考样例

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

<configuration status="INFO" monitorInterval="30">
    <!--先定义所有的appender-->
    <appenders>
        <!--这个输出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
        <File name="MyFile" fileName="${sys:user.home}/logs/app.log" append="true">
	      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] - [%p] - %m%n"/>
    	</File>
        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size, 则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/provider-app-client/info.log"
                     filePattern="${sys:user.home}/logs/provider-app-client/info-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] - [%p] - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
 
        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/provider-app-client/warn.log"
                     filePattern="${sys:user.home}/logs/provider-app-client/warn-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] - [%p] - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
 
        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/provider-app-client/error.log"
                     filePattern="${sys:user.home}/logs/provider-app-client/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="ERROR"/>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] - [%p] - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
 
    </appenders>
    
    <Loggers>
        <logger name="org.springframework" level="ERROR"></logger>
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="MyFile"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </Loggers>
</configuration>

节点配置说明

  • 根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger)

     status:用来指定log4j本身的打印日志的级别.
     monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.(如果更改配置文件,不用重启系统).
    
  • Appenders节点,常见的有三种子节点:Console、RollingFile、File.

    • Console节点用来定义输出到控制台的Appender.

        name:指定Appender的名字.      
        target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.       
        PatternLayout:输出格式,不设置默认为:%m%n.
      
    • File节点用来定义输出到指定位置的文件的Appender.

        name:指定Appender的名字.
        fileName:指定输出日志的目的文件带全路径的文件名.
        PatternLayout:输出格式,不设置默认为:%m%n.
      
    • RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

        name:指定Appender的名字.
        fileName:指定输出日志的目的文件带全路径的文件名.
        PatternLayout:输出格式,不设置默认为:%m%n.
        filePattern:指定新建日志文件的名称格式.
        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个级别,按照从低到高为:All < Trace < Debug < Info < Warn <Error < Fatal < OFF.
       AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.
      
       Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。
       level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn <Error < Fatal < OFF.
       name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
       AppenderRef: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:最高等级的,用于关闭所有日志记录.
    
  • 日志格式配置

       %m 输出代码中指定的消息 
       %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
       %r 输出自应用启动到输出该log信息耗费的毫秒数
       %c 输出所属的类目,通常就是所在类的全名 
       %t 输出产生该日志事件的线程名 
       %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” 
       %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式 如:%d{dd MMM yyyy HH:mm:ss,SSS},
       		输出类似:02 Nov 2012 14:34:02,781 
       %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数 如:Testlog.main(TestLog.java:10) 
       %F 输出日志消息产生时所在的文件名称 
       %L 输出代码中的行号 
       %x 输出和当前线程相关联的NDC(嵌套诊断环境),像java servlets多客户多线程的应用中 %% 输出一个"%"字符
    

详细配置例子项目:springBoot+log4j2+maven

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值