【发布时间】:2018-10-02 20:47:12
【问题描述】:
在我的应用程序中,我想要某种格式化方式。
为此,我写了一个SingleLineFormatter extends Formatter。
现在我正在尝试设置所有Loggers 来使用它,但无法弄清楚。
LogManager.getLogManager().readConfiguration((InputStream) configIS);
Collections.list(LogManager.getLogManager().getLoggerNames()).forEach(
loggerName -> {
List<Handler> handlers = Arrays.asList(Logger.getLogger(loggerName).getHandlers());
System.out.println(" * Logger " + loggerName + ": " + handlers.size());
handlers.forEach(handler -> System.out.println(" HF: " + handler.getFormatter()));
//handlers.forEach(handler -> handler.setFormatter(new SingleLineFormatter()));
}
);/**/
log.info("Logging test");
这会读取配置,将其应用于找到的所有处理程序。
Oct 02, 2018 10:42:10 PM cz.dynawest.logging.LoggingUtils initLogging
INFO: Log config file not found: #/logging.properties Using LoggingUtils' default.
* Logger cz.dynawest.csvcruncher.App: 0
* Logger global: 0
* Logger cz.dynawest.logging.LoggingUtils: 0
2018-10-02 22:42:10 INFO cz.dynawest.logging.LoggingUtils initLogging: Logging test
* Logger : 2
HF: cz.dynawest.logging.SingleLineFormatter@34c45dca
HF: cz.dynawest.logging.SingleLineFormatter@52cc8049
但是Loggers 的其余部分仍然使用他们配置的任何东西。可能只是 JUL 的默认设置。
Oct 02, 2018 10:42:10 PM org.hsqldb.persist.Logger logInfoEvent
INFO: checkpointClose start
我知道我可以在我的 JVM 中通过 JUL 的 logging.properties 来管理它。
但我想分发应用程序,并希望所有日志消息的格式都相同。
如何强制发送至 JUL 的所有邮件都使用我的Formatter 格式化?
有-Djava.util.logging.config.file=/path/to/app.properties,但这超出了我的特殊情况的范围。 (而且无论如何都不起作用。)
更新:第三方日志记录似乎没有通过 JUL。所以问题是 - 如果这是真的,我该如何配置其他框架?
这是正在加载到LogManager 的文件。有很多实验,所以并不是所有的都是正确的。
# Handlers
handlers = java.util.logging.ConsoleHandler java.util.logging.FileHandler
# Console
# The logging of the app actually reacts to this line.
java.util.logging.ConsoleHandler.formatter = cz.dynawest.logging.SingleLineFormatter
#java.util.logging.ConsoleHandler.formatter = cz.dynawest.logging.SimplestFormatter
java.util.logging.ConsoleHandler.level = ALL
# File
java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.pattern = app.log
java.util.logging.FileHandler.formatter = cz.dynawest.logging.SingleLineFormatter
java.util.logging.FileHandler.limit = 0
java.util.logging.FileHandler.append = true
# Default global logging level.
.formatter = cz.dynawest.logging.SimplestFormatter
.level = INFO
#global.formatter = cz.dynawest.logging.SimplestFormatter
#root.formatter = cz.dynawest.logging.SimplestFormatter
#cz.dynawest.csvcruncher.App.formatter = cz.dynawest.logging.SimplestFormatter
#cz.dynawest.csvcruncher.App.handlers = java.util.logging.ConsoleHandler
#.useParentHandlers = false
# Various customizations.
org.apache.commons.beanutils.converters.level=INFO
【问题讨论】:
标签: java logging formatting hsqldb java.util.logging