log4j2中关于日志按小时滚动的疑问 5C

就是当配置了:

<RollingFile name="run" fileName="log/run.log" filePattern="log/run.log.%d{yyyy-MM-dd-HH}">
 <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>

如果每时每刻持续有数据操作,log4j2确实会在整点生成上一个小时的日志文件,

但是如果,从某个小时开始,突然没有数据操作了,那么这个小时的数据就会一直没有被滚动封装,有解决策略么?

例子:假设我有一个接收数据的常驻服务端,10点开始,生成第一个run.log,然后10点到12点每分钟都有数据写入,那么确实会在11点整点的时候生成run.log.2018-01-01-10,会在12点滚动生成run.log.2018-01-01-11,
但是,如果我10:30之后,到1点就没有数据写入了,那么他11点整点个12点就不会滚动生成run.log.2018-01-01-10和run.log.2018-01-01-11,10点到10:30的数据依然位于run.log里面;

现在有个需求,就是即使没有数据,那么到整点也滚动生成一个文件,比如10:30之后就没数据进来了,那么11点就滚动出10点的日志un.log.2018-01-01-10,11:00到12:00没数据进来,那么就滚动出11点的日志run.log.2018-01-01-11,此时这个日志文件为空都可以,有什么解决方案么?通过重写滚动策略可以实现么?

0

2个回答

这还不简单,到时间程序人为生成日志文件不就行了吗

1
applerosa
麥田的預言 还别说,是这么个理啊,只是想当时能不能让他自己搞,而不是手动搞
一年多之前 回复
<property name="applicationName" value="cms" />

<appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/tmp/logs/${applicationName}_info.log</file>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>/tmp/logs/${applicationName}_info.log.%d{yyyy-MM-dd}</fileNamePattern>

        <!-- 保留30天的历史日志 -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${log_pattern}</pattern>
    </encoder>
</appender>
1
applerosa
麥田的預言 logback的配置,这个人家确实好一点
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
log4j 按月,周,半天,天,小时,分钟滚动日志配置
本文备忘用,下面大部分引用log4j原文,也掺杂着我增加的示例。也方便大家学习参考。   log4j is possible to specify monthly, weekly, half-daily, daily, hourly, or minutely rollover schedules. For example, log4j.appender.fileout=org.apache...
Log4j2的使用:按时间和大小分割日志,并分包输出
1、使用到的jar包 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.logging.log4j&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;log4j-core&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;2.11.0&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp
log4j2.x日志按日期分隔
log4j2.x的日志在性能上有很大的提升,也被标识为下一代的异步日志管理系统。项目组在使用的时候,发现日志没有按照日期进行文件分割。于是亲自上log4j2.x的官网查看了部分文档。按如下配置即可实现日志按日期进行分割: <!-- 基于时间的触发策略。该策略主要是完成周期性的l
log4j2 文件滚动扩展(基于行和时间的滚动)
目标:实现基于行和时间间隔的文件滚动。 注:不是纯粹的行,而是log的次数,如果log一次是一行,就是行数(我log一次就是一行)。 例如:单个文件超过10行滚动文件,如果超过10秒还不到10行,也滚动文件。 mysql默认的组合策略达不到这个目标,他是两种策略的“或”,单一的行数到达限制,或者单一的时间间隔到达限制,都会滚动。在滚动后,两个策略单独重置,而不是一起都重置。
log4j2按日期按级别的日志文件归档(限制文件大小,限制每天的文件个数(10))
${sys:catalina.home}/logs/regulators filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> onMismatch="NEUTRAL" /> filePattern="${lo
Log4j2日志的定时切割和清除
因为我的是springboot项目,所以pom如下: &amp;lt;dependencies&amp;gt;      &amp;lt;dependency&amp;gt;          &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;          &amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/art...
Log4j2 定期/定大小生成日志文件
Log4j2 对于生成日志文件时,可以通过对&amp;lt;File&amp;gt;中的&amp;lt;Policies&amp;gt;进行设置,来完整日志文件各种生成方案定期生成日志文件log4j2.xml    &amp;lt;Configuration status=&quot;WARN&quot; monitorInterval=&quot;300&quot;&amp;gt;          &amp;lt;properties&amp;gt;            &amp;lt;propert
log4j2配置日志文件以时间方式显示
===背景=== 很多时候,程序的log日志需要有相应的时间,以便跟踪和维护。java程序,使用log4j创建有时间的log文档。(PS:源码来自小强,不过技能倒是get到了,非常的实用) ===jar包准备两种方法=== ====普通工程直接下载拷贝实用jar包==== log4j-api-2.6.2, log4j-core-2.6.2,log4j-slf4j-impl-2.6.2,sl
logback配置日志文件按时间和大小滚动
1. 使用logback 0.9.7版本,我在使用logback0.9.5版本时不支持 2. 配置实例如下: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;configuration&amp;gt; &amp;lt;substitutionProperty name=&quot;log.base&quot; value=&quot;logs&quot; /&amp;gt;  &amp;
SpringBoot 配置log4j2日志输出
SpringBoot 配置log4j2日志输出pom.xml排除 web 包中的 logging,引入log4j2依赖和yaml 文件识别。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions>
【亲测有用】springboot + log4j2 日志按天并且按大小切割
别扯没用的,先看结果: 预期:每个月一个文件夹,每天刚开始一个log文件,按照日期命名, 但当当天日志文件超过8KB(可调整)就新增一个,没用超过这天就只要一个日志文件 日志文件夹:   下面是实现方式: 只能用一个字来形容:简单 一共两步: step1: pom.xml增加以下依赖:         &amp;lt;dependency&amp;gt;           &amp;lt...
Log4j2 日志不同级别打印到不同文件,保存不同时间
log4j2.xml &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;!--日志级别以及优先级排序: OFF &amp;gt; FATAL &amp;gt; ERROR &amp;gt; WARN &amp;gt; INFO &amp;gt; DEBUG &amp;gt; TRACE &amp;gt; ALL --&amp;gt; &amp;lt;!--
log4j 同时按日期和文件大小分割日志
已经封装好,把log4j.appender.fileout=org.apache.log4j.Log4JDateAndSizeSplit 即可,其余和原api一样: log4j.appender.fileout.MaxFileSize=10240KB log4j.appender.fileout.MaxBackupIndex=20
log4j生成的日志同时按大小和日期生成文件,并自动清除过期日志
最近做的项目,遇到了的情境:要每个日志按固定大小生成,超过设定大大小就生成新的日志文件,同时在文件名字后面加上日期,并自动按照设置的保留天数保留日志,过期的日志自动删除。 然而,log4j自带的生成日志的几个方法,可以按照日期时间生成日志,也可以按照设置的大小滚动生成日志,就是没有即按照大小生成,又在日志名字后面加上日期,同时又清除过期日志的方法。看了源码,决定综合重新写一个类,实现这些需求。
使用properties配置log4j2.生成种类日志并按天保存文件
log4j2.properties.直接放在resources下面就行了,程序自己会匹配status = error dest = err name = PropertiesConfig #公共变量 #文件路径 property.filePath=logs property.filePattern=logs/%d{yyyy}/%d{MM} #输出格式 property.layoutPattern...
logback按时间和大小滚动
刚接手项目里面的日志模块,发现项目启动后无法在实现日志按时间大小滚动,原本的配置文件如下: &amp;lt;!-- 文件输出日志--&amp;gt; &amp;lt;appender name=&quot;XXX&quot; class=&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;&amp;gt; &amp;lt;!-- 指定日志文件的名称 --&amp;gt; &amp;l...
log4j2+slf4j+测试类日志按日期生成
log4j2+slf4j+测试类日志按日期生成
log4j按日分割文件
# Set root logger level to ERROR and its only appender to A1.日志打印类型 log4j.rootLogger=INFO,WARN,ERROR,FATAL,Console,R # R is set to be a DailyRollingFileAppender. log4j.appender.R=org.apache.log4j.D
logback同时按照时间和大小滚动
同时按照时间和大小滚动,每个文件100MB,总共存储20GB.保存近60天的日志注意:一定要SizeAndTineBasedRollingPolicy的包&amp;lt;configuration&amp;gt;    &amp;lt;appender name=&quot;ROLLING&quot; class=&quot;ch.qos.logback.core.rolling.RollingFileAppender&quot;&amp;gt;      &amp;lt;f...
[java][log4j]Log4j每天、每小时、每分钟定时生成日志文件
 Log4j每天、每小时、每分钟定时生成日志文件
log4j2 日期换天后,今天的日志打印到了昨天的日志文件里面,rollover混乱
log4j2.xml配置规则 &amp;lt;RollingRandomAccessFile name=&quot;File&quot; fileName=&quot;${path}/${application}.log&quot; filePattern=&quot;${path}/${application}-%d{yyyy-MM-dd}-%i.log&quot;&amp;gt; ...
Log4j2使用分析(按日期保存,限制文件数量)
Log4j2使用配置,按日期保存,保留30天内文件
log4j2 按天分日志
log4j2的按天分日志文件
Log4j2日志回滚设置—之二
一.说明 本例子要求使用jar为2.7以上使用的jar为:log4j-core-2.7.jar,log4j-api-2.7.jar。 二.案例 保留7天以内的日志
Flume自定义Sink—实现按天或小时分割文件并压缩保存
   编写不易,转载请注明:http://shihlei.iteye.com/blog/2306151       项目需要:     Flume收集日志,期望落地文件系统,按小时分割,并压缩保存。     Flume自带的File Roll Sink 只能按时间分割文件,不能定制存放目录,压缩文件等。所以自定义了Sink结合Log4j的RollingFileAppender的特性,完...
log4j每个小时生成一个日志文件
log4j.properties 属性文件 log4j.logger.visitlog=INFO, VisitFile log4j.logger.pushlog=INFO, PushFile #visitLog log4j.appender.VisitFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.Vi...
log4j滚动输出压缩格式的文件
log4j滚动输出压缩格式的文件
spring boot的log4j2异步日志配置
一、log4j2异步配置 1、启动位置设置 System.setProperty(&quot;Log4jContextSelector&quot;, &quot;org.apache.logging.log4j.core.async.AsyncLoggerContextSelector&quot;); 2、引入异步日志依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId...
log4j按天生成日志文件
http://www.cnblogs.com/live365wang/archive/2012/09/23/2698903.html http://wiki.jikexueyuan.com/project/log4j/logging-files.htmllog4j按天生成日志文件的相关代码log4j.appender.file=org.apache.log4j.DailyRollingFileAp
Log4j日志配置详解(Log4j2)
Log4j日志配置详解 一、Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file现在可以同时支持时间和文件大小分割。而且log4j2支持log的动态变化加载,直接指定监控周期就可。下面给出一个简单配置例子。 例子中使用了async模式,rollfile本身必须设置成immed...
Log4j按大小、日期生成gz压缩文件并删除过期日志
1、准备jar  :log4j-1.2.17.jar,commons-logging-1.2.jar,这2个就可以了,其他关于日志的jar包就不要加进来了,在优先级上会有冲突。 2、定义一个类,继承RollingFileAppender类,这个类是按照日志大小滚动生成日志,并把日志编号。我就在这个类基础上重新写了其中的一些方法,加上日期和删除功能,稍加改动就行了。 package com.h...
坑爹的日志无法按天切割问题!
问题背景 线上某个新管理型系统出现了日志无法按天切割生成日志文件的问题,所有的日志都在一个日志文件里面,只有每次重启的时候才会重新生成文件。 这个管理系统使用的是 Spring Boot + Logback 框架,查看了 Logback 的日志文件,发现了策略组合使用问题。 以下是有问题的日志配置代码。 &amp;lt;appender name=&quot;FILE&quot; class=&quot;ch.qos.lo...
多进程log4j日志丢失问题分析
转自:http://hellojavaer.iteye.com/blog/977599
详解log4j2(下) - 按日志级别区分文件输出
1. 按日志级别区分文件输出有些人习惯按日志信息级别输出到不同名称的文件中,如info.log,error.log,warn.log等,在log4j2中可通过配置Filters来实现。假定需求是把INFO及以下级别的信息输出到info.log,WARN和ERROR级别的信息输出到error.log,FATAL级别输出到fatal.log,配置文件如下:&amp;lt;Configuration statu...
完美spring boot 使用log4j2按级别输出到不同文件
1. pom.xml引入需要的jar &amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.springframework.boot&amp;amp;amp;lt;/groupId&amp;amp;amp;gt; &amp;amp;amp;lt;artifactId&amp;amp;amp;gt;spring-boot-starter-w
log4j支持同时按日期和文件大小分割日志
  1.需要的jar包 &amp;lt;!-- LOG4J --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;slf4j-log4j12&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.7.2&amp;lt;/version&amp;gt; &amp;
log4j自定义日志级别的实例
准备: 在项目中引入log4j-1.2.16文件 第一步: import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.net.SyslogAppender; public class BanitLog { private static Logger logger =
Springboot使用log4j2作为系统日志输出方法
Springboot使用log4j2作为系统日志输出 springboot 默认使用的log输出为logback,但是因为性能需要改成log4j2作为log输出,为了实现这个功能,踩了不少坑,特此记录一下。 一下是xml文件: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;!--日志级别以及优先级排序: OFF &amp;gt; FATAL &amp;gt; ...
logback配置按照大小滚动
appender的定义,最多20个后备文件,index从1到20;当前日志文件大小超过1G,会滚动执行 <appender name="pullLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> /home/admin/pull/project.log /home/admin/pull/project
seelog 日志滚动配置
go seelog日志滚动配置
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计疑问 数据库课程设计疑问