首页 > 解决方案 > java.util.logging 配置属性文件中的 log4j.appender.console.target 等效项

问题描述

在配置属性文件中寻找log4j.appender.console.target等效的java.util.logging框架(不使用代码)。

我有一千多个 Java 类。几乎所有人都有自己的 Logger 实例,例如:

import java.util.logging.Logger;
Logger logger = Logger.getLogger(MyClass.class.getName());

我的问题是,记录器打印所有日志消息以进行System.err流式传输。但是,我希望它打印在System.out.

我知道我可以添加如下处理程序以使用不同的流。

logger.addHandler(new StreamHandler(System.out, new SimpleFormatter()))

但是我有很多 Java 类要更改。我不想这样做。

如何制作java.uitl.logging框架来打印日志消息以System.out流式传输所有类?

我正在属性文件中寻找所有类都相同的配置设置。

就像 log4j 的情况一样,我们有一个log4j.properties文件,我可以在其中设置log4j.appender.console.target=System.out,它告诉所有 log4j 记录器将日志消息打印到System.out. 我也想用java.util.logging框架做同样的事情。

标签: javaloggingpropertieslog4jjava.util.logging

解决方案


如何使 java.uitl.logging 框架将日志消息打印到所有类的 System.out 流?

java.util.logging 中没有 ConsoleHandlertarget等效项。将 ConsoleHandler 输出定向到 System.out的主题包含在另一个 SO question中。该问题中列举了您的大多数选项。

ConsoleHandler 将System.err在构建过程中获取快照。一种选择是将全局错误流与全局输出流交换。在构造完所有 ConsoleHandler 对象后,您可以将全局流交换回正确的位置。


推荐阅读