【问题标题】:Tinylog: Using DailyPolicy and SizePolicy together on a RollingFileWriterTinylog:在 RollingFileWriter 上同时使用 DailyPolicy 和 SizePolicy
【发布时间】:2018-01-10 11:40:46
【问题描述】:

如果一个RollingFileWriter同时配置了DailyPolicy和SizePolicy,并且每日日志的大小超过了SizePolicy中配置的大小,想必Tinylog什么会关闭当前的日志文件并打开一个新的,但是什么名字会给他们? 我已经使用 TimestampLabeler("yyyy-MM-dd") 配置了每日策略,它为每天提供一个唯一的文件名,但如果触发了大小策略,则可能需要创建第二个文件。 在那种情况下,它会有什么名字? 这就是我配置记录器的方式:

 Configurator.defaultConfig()
                .writer(new RollingFileWriter(LOG_DIR + "/CryoSip.log", 90, new TimestampLabeler("yyyy-MM-dd"), new DailyPolicy(), new SizePolicy(1000 * 1024)))
                .formatPattern("{date:yyyy-MM-dd HH:mm:ss} {level}: {message}")
                .activate();    

每次我重新启动我的应用程序时,记录器都会不断地将消息附加到同一个日志文件中,即使 RollingFileWriter 不支持附加模式。我不确定我是否理解 TinyLog 在此配置下的预期行为。

【问题讨论】:

    标签: java tinylog


    【解决方案1】:

    RollingFileWriter 每次启动一个新的日志文件时,它都会准确评估已配置的标签器,并覆盖任何现有的日志文件。因此,如果您同时使用 DailyPolicy 和 SizePolicy,TimestampLabeler 的日期时间模式应该更精确并包含时间。例如:TimestampLabeler("yyyy-MM-dd_HH-mm-ss")

    【讨论】:

    • 我只在追加模式下使用编写器,据我所知,它永远不会覆盖现有的日志文件。我将设计一个专门的测试,它会写入足够多的日志消息来触发大小策略并看看会发生什么。
    • 追加模式仅适用于 FileWriter 和 SharedFileWriter,不适用于 RollingFileWriter:tinylog.org/configuration#writers
    • 我可能误解了配置的工作原理。
    • 我的记录器配置如下:Configurator.defaultConfig().writer(new RollingFileWriter(LOG_DIR + "/CryoSip.log", 90, new TimestampLabeler("yyyy-MM-dd"), new DailyPolicy(), new SizePolicy(1000 * 1024))).formatPattern("{date:yyyy-MM-dd HH:mm:ss} {level}: {message}").activate();
    • 每次我重新启动应用程序(在同一天内),记录器都会不断将消息附加到同一个日志文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多