logback按照日期和等级分别存放日志
workyhx@126.com
说明
- 需要定义三个
appender
,每个等级的日志都需要定义一个appender
file
为当前日志文件的保存位置maxFileSize
为单个文件大小maxHistory
为保存天数pattern
为打印日志格式,这里设置的是输出到方法行
使用该配置后的文件树
─logs
│ error.log
│ info.log
│ warn.log
│
└─2024-05
└─2024-05-14
├─error
│ log-2024-05-14.0.log
│
├─info
│ log-2024-05-14.0.log
│
└─warn
log-2024-05-14.0.log
logback.xml
代码
<configuration>
<!-- info级别输出-->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前日志文件位置-->
<file>./logs/info.log</file>
<!-- 日志输出目录-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>./logs/%d{yyyy-MM}/%d{yyyy-MM-dd}/info/log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10 MB</maxFileSize>
<maxHistory>90</maxHistory>
</rollingPolicy>
<!-- 日志打印格式-->
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss} [%t] [%p] [%caller{1}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 此日志文件只记录error级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- warn级别输出-->
<appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前日志文件位置-->
<file>./logs/warn.log</file>
<!-- 日志输出目录-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>./logs/%d{yyyy-MM}/%d{yyyy-MM-dd}/warn/log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10 MB</maxFileSize>
<maxHistory>90</maxHistory>
</rollingPolicy>
<!-- 日志打印格式-->
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss} [%t] [%p] [%caller{1}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 此日志文件只记录error级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- error级别输出-->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前日志文件位置-->
<file>./logs/error.log</file>
<!-- 日志输出目录-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>./logs/%d{yyyy-MM}/%d{yyyy-MM-dd}/error/log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10 MB</maxFileSize>
<maxHistory>90</maxHistory>
</rollingPolicy>
<!-- 日志打印格式-->
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss} [%t] [%p] [%caller{1}] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 此日志文件只记录error级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--应用哪些appender-->
<root level="info">
<appender-ref ref="info"/>
<appender-ref ref="warn"/>
<appender-ref ref="error"/>
</root>
</configuration>