本系列第 7 篇。Appender 决定日志输出到哪,这篇覆盖最常用的三类。
ConsoleAppender(控制台)
开发环境看日志用,输出到 stdout。
xml
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
RollingFileAppender(滚动文件)
生产必备。一定要用 Rolling(滚动),否则单文件会无限增长直到撑爆磁盘。
滚动策略:SizeAndTimeBasedRollingPolicy(按时间 + 大小)
既按天切、又按大小切,是最常用的组合:
xml
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/integration.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxHistory>30</MaxHistory> <!-- 保留 30 天 -->
<MaxFileSize>50MB</MaxFileSize> <!-- 单文件超 50MB 就切 -->
<totalSizeCap>30GB</totalSizeCap> <!-- 所有日志总量上限 30GB -->
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
文件名占位符:
%d{yyyy-MM-dd}:按天。%i:同一天内的第几个文件(配合MaxFileSize)。
三个防爆盘参数一定要配
MaxHistory:保留多少天/多少个历史文件。MaxFileSize:单个文件多大就切。totalSizeCap:所有日志文件的总量上限,超了自动删最旧的。
三者配齐,日志才不会把磁盘写满。
上一篇:Pattern 布局语法
下一篇:实战:逐行拆解一份生产配置