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

转载自 坑爹的日志无法按天切割问题

问题背景

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

这个管理系统使用的是 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技术栈知识星球上也有球友遇到了这类问题。

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp.net 面向接口框架之应用程序上下文作用域组件

在团队中推广面向接口开发两年左右,成果总体来说我还是挺满意的,使用面向接口开发的模块使用Unity容器配置的功能非常稳定,便于共享迁移(另一个项目使用只需要复制配置和调用接口即可)也很好扩展(操作的数据库、表、资源等都可以配置)。 但是由于当时开发的匆忙(边开发边应用),…

投票源码程序_[内附完整源码和文档] 基于JSP实现的影视创作论坛系统

摘 要随着时代的发展&#xff0c;互联网的出现&#xff0c;给传统影视行业带来的最大便利就是&#xff0c;方便了影视从业人员以及爱好者的交流和互动&#xff0c;而为用户提供一个书写影评&#xff0c;阅读影评以及回复影评的平台&#xff0c;以影评为载体来使用户感受影评、解…

5-输入输出系统IO

【README】 1.本文总结自B站 《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1】 IO概述 【1.1】输入输出系统的发展概况 通道&#xff08;通道是netty的io多路复用的底层原理&#xff0c;需要重点了…

Java中的基本数据类型转换(自动、强制、提升)

转载自 Java中的基本数据类型转换&#xff08;自动、强制、提升&#xff09; 说基本数据类型转换之前&#xff0c;先了解下 Java 中的 8 种基本数据类型&#xff0c;以及它们的占内存的容量大小和表示的范围&#xff0c;如下图所示。 重新温故了下原始数据类型&#xff0c;现在…

我是这样入侵 Hacking Team 的

在意大利间谍软件厂商 Hacking Team 的内部邮件和文档被曝光将近一年后&#xff0c;黑掉这家黑客公司的黑客公开了他如何入侵HT的完整细节。该文档于上周六在网上发布&#xff0c;本意是为了给黑客活动人士的一份指南。但对于安全从业人员来说&#xff0c;则意味着当任何企业或…

python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...

原标题&#xff1a;Python 爬取知乎 9674 个问答&#xff0c;揭秘最受欢迎的 98 本书&#xff01;作者 | Yura责编 | 胡巍巍高尔基这话有没有道理我不知道&#xff0c;咱也不敢问&#xff0c;主要是现在也问不了。那对我来说&#xff0c;读书有什么意义呢&#xff1f;应该也是阶…

分布式作业 Elastic-Job 快速上手指南

转载自 分布式作业 Elastic-Job 快速上手指南Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务&#xff0c;这里我们使用 JAVA API 的形式来创建一个简单的任务入门&#xff0c;现在都是 Spring Boot 时代了&#xff0c;所以不建议使用 Spring 配置文件的形式。 Elast…

7-指令系统

README】 1.本文总结自bilibili《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 机器指令&#xff1a; CPU能够识别并且执行的操作命令&#xff1b;有可以理解为不同cpu&#xff0c;在生产时预设了一组…

WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例

最近出于工作需要&#xff0c;了解了一下微服务架构&#xff08;Microservice Architecture&#xff0c;MSA&#xff09;。我经过两周业余时间的努力&#xff0c;凭着自己对微服务架构的理解&#xff0c;从无到有&#xff0c;基于.NET打造了一个演示微服务架构的应用程序案例&a…

常用的数据交换格式有哪些_高程数据格式介绍

高程数据格式介绍1 概述目前业内常用的地形数据格式有img,tif,grp及dem,其中dem在地形表达中能力最强&#xff0c;效果最好&#xff0c;本文围绕dem的数据格式进行介绍。2 DEM简介数字高程模型(Digital Elevation Model)&#xff0c;简称DEM&#xff0c;是通过有限的地形高程数…

switch case 支持的 6 种数据类型

转载自 switch case 支持的 6 种数据类型那么今天就讲一下 Java 中的 switch case 语句吧&#xff0c;有忘记的同学正好可以温习一下。 Java 中 switch case 语句用来判断一个变量与一系列值中某个值是否相等&#xff0c;每个值称为一个分支。 语法格式如下&#xff1a; switc…

1-操作系统启动前的工作

【README】 1.本文总结自B站《操作系统&#xff08;哈工大李治军老师&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1】计算机上电 1&#xff09; 问题&#xff1a; 这神秘的黑色背后发生了什么 &#xff1f;计算机是怎么工作的&#x…

傅里叶变换公式_理解1维傅里叶变换

上个学期&#xff0c;学习了信号与系统。虽然知道了傅里叶变换的作用以及如何使用。但是对于它的本质&#xff0c;也就是FT是如何探测到频率的尚有疑惑。而恰好在知乎上发现了一些很好的回答。故将这些回答整理在这。感性理解1维FT知友Heinrich写的傅里叶分析之掐死教程&#x…

ASP.NET Core的配置(3): 将配置绑定为对象

出于编程上的便利&#xff0c;我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值&#xff0c;而是倾向于将一组相关的配置绑定为一个对象&#xff0c;我们将后者称为Options对象。我们在《ASP.NET Core的配置&#xff08;1&#xff09;&…

11 个简练的 Java 性能调优技巧

转载自 11 个简练的 Java 性能调优技巧想要让你的项目一直高性能运作吗&#xff1f;以下有一些技巧你可以拿去消除缓存瓶颈&#xff0c;还有一些其他的性能调优建议。 大多数开发者认为性能优化是一个复杂的话题&#xff0c;它需要大量的工作经验和相关知识理论。好吧&#xff…

pre1-flink理论-批处理与流处理+简单示例

【README】 1.本文包含了 批处理与流处理的代码示例&#xff1b; 批处理&#xff1a;把数据 攒在一起&#xff08;或攒一段时间或攒一定内存大小&#xff09;&#xff0c;然后再处理&#xff0c;这叫批处理&#xff1b;流处理&#xff1a;数据每来一个就处理一个&#xff1b;…

python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式。分享给大家供大家参考&#xff0c;具体如下&#xff1a;表单介绍表单是HTML页面中负责数据采集功能的部件。由表单标签&#xff0c;表单域和表单按钮组成。通过表单&#xff0c;将用户输入的数据提交给服务器&am…

高级 | Java中获取类名的3种方法

转载自 高级 | Java中获取类名的3种方法获取类名的方法 Java 中获取类名的方式主要有以下三种。 getName() 返回的是虚拟机里面的class的类名表现形式。 getCanonicalName() 返回的是更容易理解的类名表示。 getSimpleName() 返回的是类的简称。 都有什么区别&#xff1f; 通过…

Asp.net 面向接口可扩展框架之核心容器

新框架的容器部分终于调通了&#xff01;容器实在太重要了,所以有用了一个名词叫“核心容器”。 容器为什么那么重要呢&#xff1f;这个有必要好好说道说道。 1、首先我们从框架名称面向接口编程说起,什么是面向接口编程&#xff1f;(这个度娘回答一下) 解读一下:类是个体的定义…

pre2-flink单机部署与job提交

【README】 本文记录了flink单机部署&#xff0c;以及flink job2种提交方式&#xff1b; 【1】flink 单机部署 step1&#xff09;下载flink 包&#xff1b; Apache Flink: Stateful Computations over Data Streamshttps://flink.apache.org/ step2&#xff09;解压 tar -z…