我有一个 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/