mianshiba / 10-years-tech

随手记
2 stars 0 forks source link

log4j2花样配置 #121

Open mianshiba opened 3 years ago

mianshiba commented 3 years ago

来源:(20 条消息) Log4j2 的使用:按时间和大小分割日志,并分包输出_夏诗鸢的博客 - CSDN 博客

摘录内容

1、使用到的 jar 包

<dependency>    <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.0</version></dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId>  <version>2.11.0</version></dependency>```

2、配置文件的设置

将配置文件log4j2.xml放在maven项目的resource路径下。代码如下:

①按时间和大小分割文件

```null
<?xml version="1.0" encoding="UTF-8"?><configuration status="error">    <!-- 先定义所有的appender --> <appenders>     <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面,作为存档,如果不超过size,则此部分日志保存在web.log里面 -->        <RollingFile name="RollingFile" fileName="log4j2/logs/web.log"          filePattern="log4j2/logs/$${date:yyyy-MM}/%d{MM-dd-yyyy}-%i.log">           <!-- pattern = "[ 日志级别 | 类名 | 方法名 | 行数 | 线程名 | 区分客户端 | 时间 ] - 日志信息" -->         <PatternLayout              pattern="[ %level{length=1} | %-20class{1} | %-15M | %-2L | %-2t | %X{5} | %d{yyyy-MM-dd HH:mm:ss} ] %msg%n" />         <Policies>              <TimeBasedTriggeringPolicy interval="2 hour" />         <!--多长时间滚动一次 -->                <SizeBasedTriggeringPolicy size="10KB" />       <!-- 一个日志文件的最大大小 -->            </Policies>             <DefaultRolloverStrategy max="20" />   <!-- 文件夹下最多的文件个数 -->     </RollingFile>  </appenders>    <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->    <loggers>       <!-- 建立一个默认的root的logger -->     <root level="trace">            <appender-ref ref="RollingFile" />      </root> </loggers></configuration>```

②按时间和大小分割,并分包打印日志

```null
<?xml version="1.0" encoding="UTF-8"?><configuration status="error">    <!-- 先定义所有的appender --> <appenders>     <!-- 这个输出控制台的配置 -->     <Console name="Console" target="SYSTEM_OUT">            <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->           <ThresholdFilter level="debug" onMatch="ACCEPT"             onMismatch="DENY" />            <!-- 这个都知道是输出日志的格式 -->          <PatternLayout              pattern="[ %-20class{1} ] %msg%n" />        </Console>      <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面,作为存档 -->     <RollingFile name="RollingFile-info" fileName="log4j2/info/info.log"            filePattern="log4j2/info/$${date:yyyy-MM}/%d{MM-dd-yyyy}-%i.log">           <!-- pattern = "[ 日志级别 | 类名 | 方法名 | 行数 | 线程名 | 区分客户端 | 时间 ] - 日志信息" -->         <PatternLayout              pattern="[ %level{length=1} | %-20class{1} | %-15M | %-2L | %-2t | %X{5} | %d{yyyy-MM-dd HH:mm:ss} ] %msg%n" />         <Policies>              <TimeBasedTriggeringPolicy interval="2 hour" />         <!--多长时间滚动一次 -->                <SizeBasedTriggeringPolicy size="10KB" />       <!-- 一个日志文件的最大大小 -->            </Policies>         <DefaultRolloverStrategy max="20" />   <!--文件夹下最多的文件个数 -->      </RollingFile>      <RollingFile name="RollingFile-debug" fileName="log4j2/debug/debug.log"         filePattern="log4j2/debug/$${date:yyyy-MM}/%d{MM-dd-yyyy}-%i.log">          <!-- pattern = "[ 日志级别 | 类名 | 方法名 | 行数 | 线程名 | 区分客户端 | 时间 ] - 日志信息" -->         <PatternLayout              pattern="[ %level{length=1} | %-20class{1} | %-15M | %-2L | %-2t | %X{5} | %d{yyyy-MM-dd HH:mm:ss} ] %msg%n" />         <Policies>              <TimeBasedTriggeringPolicy interval="2 hour" />         <!--多长时间滚动一次 -->                <SizeBasedTriggeringPolicy size="10KB" />       <!-- 一个日志文件的最大大小 -->            </Policies>         <DefaultRolloverStrategy max="20" />   <!--文件夹下最多的文件个数 -->      </RollingFile>      <RollingFile name="RollingFile-error" fileName="log4j2/error/error.log"         filePattern="log4j2/error/$${date:yyyy-MM}/%d{MM-dd-yyyy}-%i.log">          <!-- pattern = "[ 日志级别 | 类名 | 方法名 | 行数 | 线程名 | 区分客户端 | 时间 ] - 日志信息" -->         <PatternLayout              pattern="[ %level{length=1} | %-20class{1} | %-15M | %-2L | %-2t | %X{5} | %d{yyyy-MM-dd HH:mm:ss} ] %msg%n" />         <Policies>              <TimeBasedTriggeringPolicy interval="2 hour" />         <!--多长时间滚动一次 -->                <SizeBasedTriggeringPolicy size="10KB" />       <!-- 一个日志文件的最大大小 -->            </Policies>         <DefaultRolloverStrategy max="20" />   <!--文件夹下最多的文件个数 -->      </RollingFile>  </appenders>    <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->    <loggers>       <!-- 此处name里面的为对应的包名,包名必须和里面的类的package相同 -->        <logger name="com.test.info" level="debug">         <!-- ref的值是对应使用的appenders的值 -->         <appender-ref ref="RollingFile-info"/>      </logger>       <logger name="com.test.debug" level="debug" >           <appender-ref ref="RollingFile-debug"/>     </logger>       <logger name="com.test.error" level="debug">            <appender-ref ref="RollingFile-error"/>     </logger>       <!-- 建立一个默认的root的logger -->     <root level="trace">            <appender-ref ref="Console" />      </root> </loggers></configuration>```
## 想法