log4j2配置文件配置详解

时间:2025-03-23 08:47:32
<? xml  version = "1.0"  encoding = "UTF-8" ?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
< configuration  status = "WARN"  monitorInterval = "30" >
      <!--先定义所有的appender-->
      < appenders >
          <!--这个输出控制台的配置-->
          < console  name = "Console"  target = "SYSTEM_OUT" >
          <!--输出日志的格式-->
              < PatternLayout  pattern = "[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
          </ console >
          <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
          < File  name = "log"  fileName = "log/"  append = "false" >
              < PatternLayout  pattern = "%d{HH:mm:} %-5level %class{36} %L %M - %msg%xEx%n" />
          </ File >
          <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
          < RollingFile  name = "RollingFileInfo"  fileName = "${sys:}/logs/"
                       filePattern = "${sys:}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%" >
              <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->       
              < 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 >
          < RollingFile  name = "RollingFileWarn"  fileName = "${sys:}/logs/"
                       filePattern = "${sys:}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%" >
              < ThresholdFilter  level = "warn"  onMatch = "ACCEPT"  onMismatch = "DENY" />
              < PatternLayout  pattern = "[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
              < Policies >
                  < TimeBasedTriggeringPolicy />
                  < SizeBasedTriggeringPolicy  size = "100 MB" />
              </ Policies >
              <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
              < DefaultRolloverStrategy  max = "20" />
          </ RollingFile >
          < RollingFile  name = "RollingFileError"  fileName = "${sys:}/logs/"
                       filePattern = "${sys:}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%" >
              < ThresholdFilter  level = "error"  onMatch = "ACCEPT"  onMismatch = "DENY" />
              < PatternLayout  pattern = "[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
              < Policies >
                  < TimeBasedTriggeringPolicy />
                  < SizeBasedTriggeringPolicy  size = "100 MB" />
              </ Policies >
          </ RollingFile >
      </ appenders >
      <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
      < loggers >
          <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
          < logger  name = ""  level = "INFO" ></ logger >
          < logger  name = ""  level = "INFO" ></ logger >
          < root  level = "all" >
              < appender-ref  ref = "Console" />
              < appender-ref  ref = "RollingFileInfo" />
              < appender-ref  ref = "RollingFileWarn" />
              < appender-ref  ref = "RollingFileError" />
          </ root >
      </ loggers >
  </ configuration >