gpt4 book ai didi

Java webstart 正在替换我的日志格式化程序

转载 作者:行者123 更新时间:2023-11-30 10:41:54 27 4
gpt4 key购买 nike

我有一个 logging.properties 文件,我在运行时加载到我的 java 应用程序中:

final InputStream logFileInputStream= this.getClass().getResourceAsStream("mylogging.properties");
LogManager.getLogManager().readConfiguration(logFileInputStream);

这个 logging.properties 文件指定了一个自定义格式化程序:

.level = INFO
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
java.util.logging.ConsoleHandler.formatter = mycustom.logging.OneLineFormatter
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.FileHandler.pattern = ./logs/blubb.%g.log
java.util.logging.FileHandler.count = 31
java.util.logging.FileHandler.formatter = mycustom.logging.OneLineFormatter
java.util.logging.FileHandler.level = FINEST

这在从命令行运行时效果很好。但是,当使用 Java Webstart 启动应用程序时,格式化程序将替换为用于 ConsoleHandler 的 SimpleFormatter 和用于 FileHandler 的 XMLFormat。logging.properties 仍在被读取,例如日志文件名称模式得到尊重。

如何避免 Webstart 替换我的格式化程序?!

最佳答案

我遇到了完全相同的问题。我不知道如何阻止 Webstart 替换格式化程序(或者为什么它一开始就无法识别它)。找不到解决方案,但最终这就是我使用 Webstart 为我工作的方式。我只是在运行时将我的自定义格式化程序 (LoggerFormatter) 重新分配给处理程序:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("conf/logging.properties");
LogManager.getLogManager().readConfiguration(is);
Handler[] handlers = Logger.getGlobal().getParent().getHandlers();
Formatter formatter = new LoggerFormatter();
for (Handler h : handlers) {
h.setFormatter(formatter);
}

关于Java webstart 正在替换我的日志格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38346259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com