当前位置: 首页 > 面试题库 >

除非有新日志,否则不会滚动TimeBasedRollingPolicy

庾才
2023-03-14
问题内容

这是我的配置:

<appender name="myAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <append>true</append>
    <file>mylogs.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>mylogs-%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>

        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} [%thread] - %M:%L - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

根据此处找到的logback文档(http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy),文件将根据我的%d{yyyy- MM-dd_HH-mm}fileNamePattern 每分钟翻转一次。

我观察了它是如何工作的,这是我的发现:

  • 它不会在很短的时间内创建日志文件。
  • 当新日志到达时,它只会为前一分钟创建一个日志文件。(例如,我在11:53 pm上有一个日志,现在是11:55 pm,当它到达11:54 pm时,它不会立即为11:53 pm创建一个新的日志文件,但是当稍后有新日志出现时,请说11:56 pm,现在它将在11:53 pm创建文件。)

我是否缺少某些内容,我认为它将每分钟创建一个日志文件?


问题答案:

在您链接的文档的部分中进一步向下滚动,您将发现:

由于各种技术原因,翻转不是由时钟驱动的,而是取决于日志记录事件的到达。例如,在2002年3月8日,假设fileNamePattern设置为yyyy-
MM-dd(每日翻转),则午夜之后第一个事件的到来将触发翻转。如果在午夜后的23分47秒内没有记录事件,则实际上将在3月9日凌晨00:23‘47
AM而非0:00
AM发生翻转。因此,根据事件的到达率,可能会以一定的延迟触发翻转。但是,无论延迟如何,从某种意义上讲,已知过渡算法都是正确的,因为在特定时间段内生成的所有日志记录事件都将在界定该时间段的正确文件中输出。


简短版本:它不是时间触发的,而是日志记录事件触发的。没有日志记录事件意味着没有过渡。在配置为每分钟翻转的配置中,这意味着在任何一分钟内都没有文件,没有日志事件到达。



 类似资料:
  • 我按照设置TwitterSource和HDFS汇的链接。 用于启动代理的命令: 我成功地做到了这一点,但现在有一个问题。在停止flume代理之前,输出不会被写入。一旦我杀了我的水槽代理,它就会被写到HDFS。 我有两个问题: 1)如何停止水槽剂 - 除了做CTRL C之外,还有其他方法吗? 2)我能让flume-agent在移动中向HDFS写信,而不必杀死代理吗? 注意:终止进程后,写入的文件。t

  • 问题内容: 我有一个只有300像素大的div,我希望它在页面加载时滚动到内容的底部。该div具有动态添加的内容,并且需要一直向下滚动。现在,如果用户决定向上滚动,我不希望它跳回到底部,直到用户再次向下滚动 是否有可能使div保持滚动到底部,除非用户向上滚动,并且当用户滚动回到底部时,即使添加了新的动态内容,它也需要保持在底部。我将如何创建这个。 问题答案: 这可以帮助您: [编辑],以匹配评论…

  • 我有一个只有300像素大的div,我希望当页面加载滚动到内容的底部时。这个div有动态添加的内容,需要一直向下滚动。现在,如果用户决定向上滚动,我不希望它跳回到底部,直到用户再次向下滚动 是否可能有一个div会一直滚动到底部,除非用户向上滚动,并且当用户向后滚动到底部时,即使添加了新的动态内容,它也需要将自己保持在底部。我该如何去创造这个。

  • 问题内容: 好的,所以我有一个监视线程,该线程检查ArrayList的大小,并在该大小大于某个数字之后执行一些操作。我现在遇到的问题是,除非我的循环中有打印语句,否则大小值永远不会更新。这是一些代码来显示我到底要做什么。 上面的代码不起作用。它永远不会进入if语句。但是,这很好用: 编辑:getSize()代码: 注意:我有另一个正在运行的线程正在更新并添加到我的t类中的列表中。 有什么帮助吗?当

  • 当bean是POJO时,Weld说“对类型Foo的不满意的依赖关系”是什么意思,但是,只要我在顶部添加< code>@Dependent,一切都工作正常?我记得以前不用指定作用域也能很好的工作。我想我打碎了什么东西。 说明书上说: 托管 Bean 由 Java 类实现,该类称为其 Bean 类。如果顶级 Java 类被任何其他 Java EE 技术规范(如 Java 服务器人脸技术规范)定义为受管

  • 使用JavaFX8,如果ObjectProperty的一个属性发生更改,但引用保持不变,那么如何能够得到通知? 下面是使用ObjectProperty的具体示例 相关代码是第一次设置的值并随后删除一个元素的位置。change eListener仅在设置的值时收到通知,但在值更改时不会收到通知。 我的问题是:即使引用的对象没有更改,如果密钥库得到更新,我如何获得通知?JavaFX中是否有内置方式?