java - 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
框架做同样的事情。
解决方案
如何使 java.uitl.logging 框架将日志消息打印到所有类的 System.out 流?
java.util.logging 中没有 ConsoleHandlertarget
等效项。将 ConsoleHandler 输出定向到 System.out的主题包含在另一个 SO question中。该问题中列举了您的大多数选项。
ConsoleHandler 将System.err
在构建过程中获取快照。一种选择是将全局错误流与全局输出流交换。在构造完所有 ConsoleHandler 对象后,您可以将全局流交换回正确的位置。
推荐阅读
- java - 地图上的 Hibernate 自定义查询会生成不需要的子查询
- java - 将 Java 代码移植到 C# 时出现错误 CS0120 和 CS0103
- powershell - powershell move-item based names only from csv and rename 如果它已经存在,则基于编号
- synchronization - 令牌从我的网站真正同步
- node.js - 为什么我可以在节点 CLI 中获取 mysql.js 但不能在命令行中获取
- firebase - 试图从 Promise 中获取 firebase 值
- bash - 将文本复制到相应文件夹的相应文件中
- javascript - 如何从 webpack 中的资产 url 中删除后缀斜杠“/” | 盖茨比
- r - 合并两个单元格不匹配的数据框
- xml - 如何使用 spark scala 将包含超过 1 个行标记的复杂 xml 文件加载到数据框中并将其保存为表(注意通用解决方案)