【问题标题】:tinylog2 - reconfigure during runtinylog2 - 在运行期间重新配置
【发布时间】:2021-06-14 14:15:28
【问题描述】:

在我已经记录了一些行之后,有没有办法重新配置 tinylog2 属性? 我想在运行期间更改日志文件名,当用户更改选择(使用不同的文件)时,无需重新启动我的程序。

我的代码只在第一次工作:

private void initLogger(String fileName) {
//        log to file
        Configuration.set("writer","file");
//        set log file name
        if (inFileCheckBox.isSelected()){  // log file name is working file name
            Configuration.set("writer.file",fileName);
        }else{ // log file name by month (MM-YYYY)
            Configuration.set("writer.file", new SimpleDateFormat("MM-yyyy").format(new Date()));
        }
        Logger.info("yow it's : {}", fileName);
    }

我尝试在更改参数之前手动关闭它,但没有帮助:

ProviderRegistry.getLoggingProvider().shutdown();

这是我第二次运行该方法时遇到的错误:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Configuration cannot be changed after applying to tinylog

谢谢!

【问题讨论】:

    标签: tinylog


    【解决方案1】:

    tinylog 的原生日志记录提供程序不支持在发布第一个日志条目后更改配置。但是,您可以通过扩展或包装 tinylog 的本机日志记录提供程序 TinylogLoggingProvider 来创建自定义日志记录实现,并自行添加所需的运行时更改逻辑。

    您可以在 tinylog 网站上找到如何注册和使用自定义日志提供程序的文档:https://tinylog.org/v2/extending/#custom-logging-provider

    【讨论】:

    • 理解从 v2 开始,配置是故意不可变的。但是,在运行时更改日志级别的推荐方法是什么?例如。我在 k8s 集群中运行了许多 Docker 容器实例。在运行时,我看到一些错误日志并想打开调试/跟踪级别。默认情况下,我是否必须重新构建整个 Java 应用和 Docker 映像并重新部署到正在运行的集群?
    • 推荐的方式是使用自定义日志提供程序,它扩展了默认的 TinylogLoggingProvider。这是一个 Kotlin 示例:github.com/tinylog-org/tinylog/issues/…。只需要几行代码。
    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2012-05-15
    • 2014-08-21
    • 2018-01-09
    相关资源
    最近更新 更多