文档章节

坑爹的日志无法按天切割问题!

Java技术栈
 Java技术栈
发布于 2018/05/24 14:52
字数 628
阅读 66
收藏 0

问题背景

线上某个新管理型系统出现了日志无法按天切割生成日志文件的问题,所有的日志都在一个日志文件里面,只有每次重启的时候才会重新生成文件。

这个管理系统使用的是 Spring Boot + Logback 框架,查看了 Logback 的日志文件,发现了策略组合使用问题。

以下是有问题的日志配置代码。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
        <MaxHistory>30</MaxHistory>
    </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>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>

</appender>

该配置使用了基于时间的滚动切割策略 TimeBasedRollingPolicy,每天0点自动生成一份新的日志文件。

但里面包含了一段 triggeringPolicy 触发策略,即最大单个文件超过 10MB 自动新成新日志文件,TimeBasedRollingPolicy 是基于时间的,不能和其他策略一起组合使用。

解决办法

1、去掉组合策略 triggeringPolicy

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
        <MaxHistory>30</MaxHistory>
    </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>

2、使用时间和大小组合策略 SizeAndTimeBasedRollingPolicy

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
		<level>INFO</level>
	</filter>
	
	<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
		<FileNamePattern>${LOG_PATH}/info.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
		<MaxHistory>30</MaxHistory>
		<maxFileSize>20MB</maxFileSize>
	</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>

注意后面的 %i 是必须要加上去的,是单个日志文件超大小后的切割序号。

使用以上两种方案都可以解决 Logback 无法按天切割生成日志的问题,如果这两种解决不了你的问题,那你也要检查下你的滚动策略是否使用正确。

问题偶遇

巧了,Java技术栈知识星球上也有球友遇到了这类问题。

image

他使用了 Resin + Log4j 框架,还是要检查配置,配置错了一点就会导致无法正常生成滚动日志文件。。。

如果你对此还有其他的解决方案,欢迎留言。想深入交流,或者对我们所有文章知识点有困惑的,扫描正文公众号,并在后台回复"星球"加入我们的知识星球一起学习。

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

image

© 著作权归作者所有

Java技术栈
粉丝 182
博文 175
码字总数 153747
作品 0
深圳
架构师
私信 提问
Nginx日志切割

日志切割 当网站访问量大后,日志数据就会很多,如果全部写到一个日志文件中去,文件会变得越来越大。文件大速度就会慢下来,比如一个文件几百兆。写入日志的时候,会影响操作速度。另外,如...

苑洪武
2017/11/10
0
0
日志配置,日志收集,日志切割

linux系统中日志分析 是很重要的一部分,下面介绍一下简单的日志自定义配置和日志收集 1 日志配置 配置文件在/etc/rsyslog.conf中 日志分为日志类型,日志级别。 日志类型: mail 邮件类型 ...

wzl_up
2016/09/27
301
0
自动分割日志bash shell脚本

一、很多服务软件的日志文件时间久了,文件很大,查看内容很不方便。下面的脚本是按天来分割日志,朋友们也可以自己修改按小时的。 二、代码主体: #!/bin/bash 按天分割日志 date= 需要分割...

ss75710541
2014/02/26
0
0
使用cronolog实现tomcat日志切割

背景: Tomcat的日志catalina.out在使用过程中会不断增长,当日志过大时,可能会对tomcat的性能产生影响。 使用日志切割的方法,可以有效解决日志过大的问题。它可以把日志按天进行切割存储,...

icenycmh
2016/10/14
0
0
logrotate不能每天切割nginx日志

我在centos6.4环境中配置了logrotate按天切割nginx的日志文件access.log。隔天查看时发现cronta是有执行logrotate的记录,但是nginx的日志文件并未切割。下面是logrotate.conf的具体配置信息...

秋天的菠菜
2014/02/13
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

二叉树交换左右子树

树的实现类 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) {val = x;}public TreeNode(int val, TreeN......

jxlgzwh
19分钟前
9
0
在Workstation 15上测试vShere 6.7+vCenter Server

想学习vSphere,最好能在自己的电脑上搭建相应的学习环境,如下图所示: _________________________________ | ...

大别阿郎
22分钟前
6
0
centos7上部署vnc服务器并实现远程桌面

centos7上部署vnc服务器并实现远程桌面 centos7上进行一下操作 [root@localhost ~]# yum install tigervnc-server -y#安装vnc服务器 Loaded plugins: fastestmirror, langpacks base | 3.6 ......

恩多
25分钟前
9
0
CSS--表格

一、表格的常用属性 1、边距属性padding(td的mrgin无效) 2、边框属性border 3、尺寸属性 width height 4、文本格式 font-* text-* line-height 5、背景属性 颜色,图片,渐变 二、特有属性...

wytao1995
42分钟前
5
0
zookeeper - leader选举

让我们分析如何在ZooKeeper集合中选举leader节点。考虑一个集群中有N个节点。leader选举的过程如下: 所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序、临时节点。 ZooKeeper集...

Canaan_
53分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部