将错误日志单独提到一个文件中这个操作在实际开发中非常常见且必要,只需要加多一个 appender
。 这部分的内容基本上是固定的,除了pattern可能有些许差异,基本上是一次编写,多处cv。
<!--最大保存天数-->
<property name="KEEP_MAX_DAY" value="180" />
<!--总最大保存文件大小-->
<property name="KEEP_TOTAL_MAX_SIZE" value="5GB" />
<!--单文件最大保存文件大小-->
<property name="KEEP_FILE_MAX_SIZE" value="100MB" />
<!--error日志-->
<appender name="error"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>${KEEP_FILE_MAX_SIZE}</maxFileSize>
<maxHistory>${KEEP_MAX_DAY}</maxHistory>
<totalSizeCap>${KEEP_TOTAL_MAX_SIZE}</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%date %level %X{thread_id}|%X{session_id}| [%thread] %logger{36} [%file : %line] %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>
最后别忘了在原有的root
标签启用appender
<root level="INFO">
<appender-ref ref="error" />
</root>