logback 基本使用
logback 的三部分结构:appender、root、logger
- appender
encoder:确定将事件写入基础的方式OutputStreamAppender
filter:过滤此日志文件只记录xx级别的日志
rollingPolicy:日志记录器的滚动策略【此文重点问题坑】 - root
打印控制台,跟着 ref -
-
<root level="info">
-
<appender-ref ref="CONSOLE"/>
-
<appender-ref ref="INFO_FILE"/>
-
<appender-ref ref="ERROR_FILE"/>
-
</root>
MaxHistory 属性日志文件保留天数不生效问题
-
- MaxHistory 属性可以按“文件数量、小时、天、月、年”等策略实现文件保留。但是很多人都遇到过此配置不生效问题,网上都只介绍了 cleanHistoryOnStart ,而我是另一种情况,这里汇总一下。
-
-
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
-
<contextName>logback</contextName>
-
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-
<property name="log.path" value="../logs/worknotice"/>
-
-
<!-- 时间滚动输出 level为 INFO 日志 -->
-
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-
<!-- 正在记录的日志文件的路径及文件名 -->
-
<file>${log.path}/log_info.log</file>
-
<!--日志文件输出格式-->
-
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-
<charset>UTF-8</charset>
-
</encoder>
-
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
-
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
<!-- 每天日志归档路径以及格式,编码器 -->
-
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-
<!--每个文件最多100MB-->
-
<maxFileSize>100MB</maxFileSize>
-
<!--日志文件保留天数-->
-
<maxHistory>15</maxHistory>
-
<!--每个文件最多100MB,保留15天的历史记录,但最多20GB-->
-
<totalSizeCap>20GB</totalSizeCap>
-
<!--重启清理日志文件-->
-
<cleanHistoryOnStart>true</cleanHistoryOnStart>
-
</rollingPolicy>
-
<!-- 此日志文件只记录info级别的 -->
-
<filter class="ch.qos.logback.classic.filter.LevelFilter">
-
<level>info</level>
-
<onMatch>ACCEPT</onMatch>
-
<onMismatch>DENY</onMismatch>
-
</filter>
-
<!-- 另外一种配置日志文件方式如下这样的话就把error 和info日志区分开-->
-
<!-- 自定义高亮颜色 -->
-
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-
<withJansi>false</withJansi>
-
<encoder>
-
<pattern>
-
%d{yyyy-MM-dd HH:mm:ss.SSS} %-10([%thread]) %-5level %logger{50} (%file:%line\) - %msg%n
-
</pattern>
-
<charset>UTF-8</charset>
-
</encoder>
-
</appender>
-
-
<!-- info⽇志 -->
-
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-
<!-- 过滤⽇志 -->
-
<filter class="ch.qos.logback.classic.filter.LevelFilter">
-
<level>ERROR</level>
-
<onMatch>DENY</onMatch> <!-- 如果命中就禁⽌这条⽇志 -->
-
<onMismatch>ACCEPT</onMismatch> <!-- 如果没有命中就使⽤这条规则 -->
-
</filter>
-
<encoder>
-
<pattern>${LOG_PATTERN}</pattern>
-
</encoder>
-
<!-- 滚动策略 -->
-
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
<!-- 设置info⽇志路径 -->
-
<fileNamePattern>log/info.%d.log</fileNamePattern>
-
</rollingPolicy>
-
</appender>
-
<!-- error⽇志 -->
-
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
-
<!-- 过滤⽇志 -->
-
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-
<level>ERROR</level>
-
</filter>
-
<encoder>
-
<pattern>${LOG_PATTERN}</pattern>
-
</encoder>
-
<!-- 滚动策略 -->
-
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
<!-- 设置error⽇志路径 -->
-
<fileNamePattern>log/error.%d.log</fileNamePattern>
-
</rollingPolicy>
-
</appender>
-
<!-- ⽇志输出级别 -->
-
<root level="INFO">
-
<appender-ref ref="console" />
-
<appender-ref ref="fileInfoLog" />
-
<appender-ref ref="fileErrorLog" />
-
</root>
-
</appender>
另外还可以这样配置
-
-
-
<configuration scan="true" scanPeriod="30 seconds" debug="false">
-
<contextName>project</contextName>
-
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
-
<property name="log.path" value="log/project" />
-
<property name="log.maxHistory" value="3" />
-
<property name="log.colorPattern" value="%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %boldCyan([${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]) %yellow(%thread) %green(%logger) %msg%n"/>
-
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level [${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %thread %logger %msg%n"/>
-
-
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-
<encoder>
-
<pattern>${log.colorPattern}</pattern>
-
</encoder>
-
</appender>
-
-
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
<fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
-
<MaxHistory>${log.maxHistory}</MaxHistory>
-
</rollingPolicy>
-
<encoder>
-
<pattern>${log.pattern}</pattern>
-
</encoder>
-
<filter class="ch.qos.logback.classic.filter.LevelFilter">
-
<level>INFO</level>
-
<onMatch>ACCEPT</onMatch>
-
<onMismatch>DENY</onMismatch>
-
</filter>
-
</appender>
-
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
<fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
-
</rollingPolicy>
-
<encoder>
-
<pattern>${log.pattern}</pattern>
-
</encoder>
-
<filter class="ch.qos.logback.classic.filter.LevelFilter">
-
<level>ERROR</level>
-
<onMatch>ACCEPT</onMatch>
-
<onMismatch>DENY</onMismatch>
-
</filter>
-
</appender>
-
<root level="debug">
-
<appender-ref ref="console" />
-
</root>
-
<root level="info">
-
<appender-ref ref="file_info" />
-
<appender-ref ref="file_error" />
-
</root>
-
</configuration>
-
原因分析与解决方案
-
大家项目中大多数配置方式都与上面类似,这里面最常见的问题就是日志保留天数配置 maxHistory 无效,不能自动删除过期日志文件。原因可能如下:
- 1、fileNamePattern 配置的是月、年等,而你想要的是天, 这里检查一下配置方式是否与预期相符——属细节问题
- 2、配置 cleanHistoryOnStart 属为 true 即可——这是网上解释最多遇到最多的一点。
- 3、结构类-我遇到的问题:前面介绍了,lgoback 要有 appender、root、logger 三个级别,这里要对应上
- appender name=“INFO_FILE” 要在 root 里进行引用
<appender-ref ref="INFO_FILE"/>
<root level="info">
要与 logger 下的 level=“info” 对应。——这是我遇到的问题
- appender name=“INFO_FILE” 要在 root 里进行引用
- 优化类:建议追加最大配置,按照实际业务情况配置 totalSizeCap ,避免占用磁盘空间。(作用是,假如你诉求是 maxHistory 保留7天日志文件,但是可能这7个文件总大小超出磁盘容量,所以可以通过 totalSizeCap 来控制总大小,这样系统会判断大于此值时进行自动覆
maxHistory
可选的 maxHistory 属性控制要保留的归档文件的最大数量,以异步方式删除较旧的文件。例如,如果您指定每月滚动,并将maxHistory设置为6,则将保留6个月的归档文件,并删除6个月以上的文件。请注意,由于删除了旧的归档日志文件,因此将适当删除为日志文件归档而创建的所有文件夹。
totalSizeCap
可选的totalSizeCap 属性控制所有存档文件的总大小。当超过总大小上限时,最早的档案将被异步删除。该totalSizeCap属性要求maxHistory属性设置为好。此外,始终会首先应用“最大历史记录”限制,然后再应用“总大小上限”限制。
cleanHistoryOnStart
如果设置为true,则将在追加程序启动时执行归档删除。默认情况下,此属性设置为false。
通常在过渡期间执行归档删除。但是,某些应用程序的生存时间可能不足以触发翻转。因此,对于这种短暂的应用程序,归档删除可能永远不会有执行的机会。通过将cleanHistoryOnStart设置为true,将在附加程序启动时执行归档删除。fileNamePattern 值及其作用说明
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfkcee
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13