gpt4 book ai didi

java - 如何关闭独立命令行应用程序中的所有日志记录(甚至是依赖项)(jar-with-dependencies)

转载 作者:行者123 更新时间:2023-12-02 00:36:59 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它依赖于一大堆库。我使用 assembly maven 插件将整个东西打包到一个 JAR 中。

该库主要使用常规 JAR 依赖项,因此客户端将控制日志记录。但是,当它打包为独立的可执行 JAR 时,我不想显示您通常在服务器日志中看到的所有这些日志。

我显然不控制依赖项使用什么类型的日志记录库。在我的 main 中,我使用 JDK java.util.logging

如何以编程方式关闭所有日志记录(或仅将其保留在SEVERE级别)?

我已尝试按照建议执行 here (我将级别设置为 SEVERE)在我的 main 的一开始,但所有日志仍然显示。

执行 JAR 时如何让日志停止显示在命令行上?

最佳答案

How do I get the logs to stop showing up on the command-line when I execute the JAR?

如果您想采取严厉措施,您可以通过简单地关闭输出流和错误流来停止所有控制台输出:

System.out.close();
System.err.close();

请记住,无法重新打开这些流。

How do I programmatically turn off all logging (or leave it only at SEVERE level)?

对于 7 月,您可以按照说明创建 logging.properties文件。

I obviously don't control what type of logging libraries dependencies use...

您必须包含这些框架的配置文件才能将其关闭。

How do I programmatically turn off all logging (or leave it only at SEVERE level)?

子记录器将从根记录器继承。您可以将根记录器设置为严重并将其处理程序设置为严重:

private static final Logger[] PINS = new Logger[]{Logger.getLogger("")};
static {
for (Logger l : PINS) {
l.setLevel(Level.SEVERE);
for (Handler h : l.getHanders()) {
h.setLevel(Level.SEVERE);
}
}
}

关于java - 如何关闭独立命令行应用程序中的所有日志记录(甚至是依赖项)(jar-with-dependencies),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57966971/

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