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

就是当配置了:

<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,此时这个日志文件为空都可以,有什么解决方案么?通过重写滚动策略可以实现么?

3个回答

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

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>
applerosa
麥田的預言 logback的配置,这个人家确实好一点
一年多之前 回复

你这个问题解决了吗,我配置了两种策略,大小超过100m或超过当天,就滚动,可是昨天的65m在昨天24点并没有滚动

qq_35598801
罗月月 回复麥田的預言: filePattern中的%d{yyyyMMdd}只有在当天有过日志写入的时候才会滚动,如果那一天完全没有过日志写入,那么就不会滚动,这样子之后,每天会有一个滚动文件,即使是空的,小提示醍醐灌顶谢谢!
2 个月之前 回复
applerosa
麥田的預言 写个定时任务器,到00:00了,打印一行空日志就行了
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
nginx按小时切割日志
有的日志比较大,一天的日志就有200g一台机器,如果按天切割日志,文件太大了,需要按小时切割日志。下面讲述一个按小时切割日志的方法,通过apache的cronolog来完成日志的切割。 1、首先安装日志切割   yum install httpd 2、配置nginx的日志落地文件名,比如/opt/log/accesslog。 3、再启动nginx之前,先用mkfifo
Java 中的 log4j2 日志部署
Java 中的 log4j2 文件 我的 log4j2 文件的部署 log4j2.xml &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlsp...
java日志体系log4j2
分布式日志框架
log4j2日志保存
logj2与log4j的区别 log4j2是log4j的升级版,log4j 2.0与以往的1.x有一个明显的不同,其配置文件只能采用.xml, .json或者 .jsn。在默认情况下,系统选择 configuration文件的优先级如下:(classpath为scr文件夹): 1.classpath下名为 log4j-test.json 或者log4j-test.jsn文件...
log4j2异步日志模板
该日志模板生成的日志如下:当天日志dwh.ERROR,dwh.INFO,dwh.WARN。往期的所示:.log文件 log4j2异步日志模板,可以直接使用,异步日志需要依赖disruptor 框架,需要添加maven如下配置: &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.lmax&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;g...
log4j2 支持彩色日志
基本的log4j2配置见上节。1、彩色配置PatternLayout pattern="%highlight{[ %p ] [%-d{yyyy-MM-dd HH:mm:ss}] [ LOGID:%X{logid} ] [%l] %m%n}"/>加上%highlight {}。2、输出
log4j2 日志推送
protocol 指定类型: tcp udp 默认tcp charset 指定输出字段数据 JsonLayout 是否已json 格式推送 (接收到位json格式) log4j2 配置 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;Configuration&amp;gt; &amp;lt;!-- Appenders 输出目的地 --&amp;g...
log4j2日志笔记
1、日志级别,输出日志级别大于日志文件设置的级别才能输出。 OFF &amp;gt; Fatal &amp;gt; Error &amp;gt; Warn &amp;gt; Info &amp;gt; Debug &amp;gt; Trace &amp;gt; All 2、Appenders中子节点Console、File、RollingFile、RollingRandomAccessFile区别? Console:用于输出在控制台 File...
log4j2日志web项目配置
log4j2 日志配置: log4j和log4j2的区别可以百度看下,简单的知道好处是简化了配置 1、log4j采用.properies类型配置文件,log4j2采用了xml, 2、log4j2 保存日志用的异步保存方式,提高了效率(某天在博客上看到一篇文章,说可以采用半异步,半同步方式保存,具体哪个方式最适合可以百度下) 首先导入j
log4j2 个性化日志名
目的:     利用log4j2进行请求中的手机号码的收集,并将收集到的日志文件存放在共享磁盘里。 问题:     由于多台服务器写日志,那么就需要给每台服务器打印的日志文件加个前缀名,以免冲突。 解决方案:     参考:http://logging.apache.org/log4j/2.0/manual/lookups.html#SystemPropertiesLoo
Spring Boot日志-log4j2
从零开始学Spring Boot视频教程,该课程主要讲解Spring Boot技术,理论+实战、一步一步带你入门 。《Spring Boot 自定义Starter 》3节;《Spring Boot WebSocket单聊+群聊》6节;《Spring Boot MyBatis 注解篇》12节;《Spring Boot MyBatis XML篇》 8节。
Log4j2实现异步日志
Log4j2实现异步日志,有相关资料的测试数据表明:3,000,000条日志,全异步模式(All Logger Async)用了20分钟打印到日志文件,混合模式(Mixing)用了40分钟” 不知金融类的业务系统,有采用这种方式处理日志的吗?有兴趣可在回复中分享下经验。
Log4j2写日志的艺术
Log4j2中的组件 从配置开始 API基本使用 小细节 写日志的原理 主要流程 同步写 异步写 顺便说一下ArrayBlockingQueue notFull 与 notEmpty 异步写是怎么玩的 巧妙的异步写设计 ByteBuffer与RandomAccessFile Garbage-free避免创建多余对象 异步Logger 性能 写在最后 在程序的世界里,抽象让人像是雾里看花。抽象让程
Log4J2 日志链实现
Log4J2 日志链实现 背景: 日志是系统出现问题,最关键的信息,让开发人员快速找到日志信息,定位问题,我们需要有一个完整的日志系统,业界有ELK等日志系统,特别在分布式(微服务)中,日志就变得更加复杂,服务器资源多,日志打印开发无法快速找到日志信息在哪一台机器上,这时就需要我们记录日志的信息链路(路由),日志跟踪ID(TraceID)等信息,返回跟前端,开发通过查看接口就能快速找到日志信息方便...
日志学习:SLF4J & Log4J2
SLF4J SLF4J 不是一个真正的日志实现,而是一个抽象层,它允许在后台使用任意一个日志类库。如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。 SLF4J使代码独立于任意一个特定的日志API(类似iterator?) 优势: 占位符:{} , 可以替换为对应的值,降低了字符串的链接次数,节省了新建的 String 对象。通过使用SL
log4j2输出日志到kafka
个人分享,能力有限,不喜勿喷。 项目为简单demo,仅供参考。码云地址:https://gitee.com/weifeng520/springboot-kafka.git 通过log4j2组件输出日志到kafka。
springboot logback 配置(按小时切割日志)
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址--> <property name="LOG_HOME" value="./logs" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class=
Oracle日志分组查询(按天或者小时)
Oracle日志分组查询(按天或者小时)Oracle日志分组(按天)Oracle查询SQL语句Oracle日志昨天分组(按小时)Oracle查询SQL语句 Oracle日志分组(按天) 按照日志生成日期进行分组统计Sql,如每日生成的访问日志有多少? Oracle查询SQL语句 SELECT COUNT(*) AS GCOUNT,GDate FROM (SELECT to_char(created...
关于log4j2子进程无法输出日志的问题
设备:树莓派rn环境:linuxrnjava环境:sdk1.8rn我打算开一个主程序然后再里面用process builder建子进程去管理其他程序的运行状况。rn然后我发现单独开其他程序的话log4j2是会按照我的配置把日志输出到文件里的rn但是用主程序开其他程序的话,就会只输出主程序的日志,其他程序的不输出日志rn然后我本想把主程序做成开机启动,于是写了个bash脚本开启主程序,把那个脚本当做服务开机启动。rn然而当我用脚本启动的时候,连主程序也不输出日志了。rnrn我去baidu和谷歌都搜了。。好像都没有类似子进程的问题,只有不同进程对同一日志的记录。但是我的日志输出目录是不一样的,也不是写在同一个日志里。rn在Stack Overflow上发了贴,还没有人回。rn请问这个是我设置的有问题还是log4j不支持这样的日志输出方法?rn有什么好办法?rnrn如果想了解详细程序内容请跟帖,先感谢各位了!
关于实现log4j2日志脱敏的一种方案
log4j2日志脱敏方案
关于 log4j2 生成 json 格式的日志
目的 参考这篇文章 log4j2 的 JsonLayout 测试 我们已经知道 Log4j2 能够输出 json 格式的日志,但还是没有很好的支持 ELK 的需求,打印出来的每一条日志是多行显示的,那么该如何配置具体的格式呢?请往下看。 方法 参照 Log4j 官网的说明: https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/ap...
log4j按小时输出日志,并且限制日志保存的天数
最近做项目的时候,遇到了日志的输出问题。我们想按小时输出日志,同时最多保存7天的日志。log4j本身自带的appender如下: org.apache.log4j.ConsoleAppender 输出到控制台 org.apache.log4j.FileAppender 输出到文件 org.apache.log4j.DailyRollingFileAppender  org.apache.l...
log4net 按天与按小时记日志的配置
1 按天记日志 <param name="Header" value=" " /> 2 按小时记日志
idea中应用log4j2彩色日志
看到别人的控制台输出是那么美观,再看看自己的是那么凌乱。作为天秤座的一只小白,这怎么能忍受。。。于是,有了这篇log4j2的彩色日志。 先贴上测试结果: 首先,需要两个jar包。如果是maven工程,添加两个依赖。l &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.logging.log4j&amp;lt;/gr...
java中的日志-log4j和log4j2入门
1.主要有jdk的logger,log4j和log4j2等多种日志文件技术 2.日志的级别 (1)fatal(致命的) (2)error(错误的) (3)warn(警告) (4)info (信息) (5)debug(调试) (6)trace(堆栈) 3.程序中的日志实现步骤 (1)导入jar包    log4j的jar包 log4j2的两个jar包 (2)编写配置...
log4j2在web应用中设置日志的文件位置
不使用什么 $env:logpath或者-D这种启动参数设置的文件目录。n要求只要打个包扔上去就可以使用webapp中对应的日志目录,不要在外面做什么设置n比如设置日志目录到/web-info 或者/logs 中。servletlistioner方式试过不起什么作用,nlog4j在他之前就已经加载完成了。
log4j2在tomcat中的日志存放路径
1. 设置路径为tomcat/logs &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!--${sys:catalina.home} 指向tomcat安装目录--&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!--输出到文件 用来定义超过指定大小自动删除旧的创建新的的Appender.--&amp;amp;amp;amp;amp;amp;a
日志系列之WEB应用中使用Log4j2
当在Web应用中使用Log4j2或者其它日志框架时,需要确保:web应用启动时,日志组件能够被启动;web应用关闭时,日志组件能够被关闭。对于Log4j2,需要在应用中添加log4j-web包。log4j2.xml的加载 首先寻找web.xml中指定的log4j2.xml文件,如下图所示: <context-param> <param-name>log4jConfigLocation
log4j日志替换成log4j2日志和集成graylog
公司现在的日志是使用的log4j记录的,代码中使用的是sl4j这种日志切面.  运维那边 弄了个graylog日志才加系统,现在需要将日志记录到graylog中和将log4j日志改成log4j2,具体方法如下;注意:这只是要修改的部分,不是完整版maven配置    &amp;lt;!-- druid监控sql版本,高版本的才支持log4j2 --&amp;gt;     &amp;lt;dependency&amp;gt; ...
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
SpringBoot下使用Log4J2,按日期保存7天日志
参考博客: https://www.cnblogs.com/xishuai/p/spring-boot-log4j2.html https://blog.csdn.net/shope9/article/details/87379255 导入依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframew...
Log4j2日志回滚设置—之二
一.说明 本例子要求使用jar为2.7以上使用的jar为:log4j-core-2.7.jar,log4j-api-2.7.jar。 二.案例 保留7天以内的日志
日志系列之Log4j2 Garbage-free模式
Garbage-free核心思想:避免或减少对象的创建;实现方式 对象复用(threadlocal、jvm级别复用); 避免临时对象的创建; From version 2.6, Log4j runs in “garbage free” mode by default where objects and buffers are reused and no temporary objects are
log4j2日志重复问题的解决
在一个新项目中采用了log4j2 2.3(jDK6最高只支持这个版本),原本也没发现有什么问题。 后来为了减少日志输出把root的日志级别改到了warn,把自己包的级别改到了trace。刚开始没注意,次日下午才发现日志内容都输出2次,以为修改了拦截器动态发布导致的,也没关注。 第三天,启动项目时发现springMVC的提示是双份,就觉得有问题了。仔细看了看,发现Tomcat和其他的日志只输出一次,...
log4j2配置输出日志到Kafka
首先,需要引入依赖包: org.apache.kafka kafka-clients 0.9.0.1 如果配置文件是yml格式的,还需要这个依赖: com.fasterxml.jackson.dataformat jackson-dataformat-yaml yml格式的配置方法: Configuration: status
日志版本-log4j2版本jar
log4j的升级版本,包含日志配置文件,要注意的是部分jar包的日志默认是log4j
springcloud--日志链路追踪之log4j2
传统的log4j,同步打印日志,同时输出许多条日志记录,会采用抢占式,谁先得到输出机会,先打印某条日志。log4j2,异步打印日志,业务线程将日志输出存放到一个无锁化环形队列(RingBuffer),log4j2的异步线程会从该队列中读取日志,并进行持久化。该环形队列,可以设置缓冲区大小,以及队列满了后,将debug/info/error/trace中某个级别的日志进行剔除。使用:maven依赖&amp;...
SpringBoot Log4j2日志分级输出
SpringBoot Log4j2日志分级输出application.propertieslogging.config=classpath:log4j2.propertieslog4j2.properties分级输出不同级别的日志到不同文件中。name=PropertiesConfig property.filename=logs appenders=console, Info, Error# ro
使用slf4j + Log4j2构建日志
一、背景 Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升,而Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback(官方数据是10倍以上),这里分享slf4j + Log4j2的使用方法。 二、步骤 1、pom.xml 删除以往依赖Log4j1.x的依赖项,比如slf4j-log4j12、log4
Log4j2异步写日志源码
分三类文件,pom通过maven构建所需jar包,log4j2.xml配置文件,TestController.java测试类,使用debug测试效果较明显。
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数