繁体   English   中英

如何在独立的命令行应用程序中关闭所有日志记录(即使是依赖关系)(jar-with-dependencies)

[英]How to turn off all logging (even for dependencies) in a standalone command-line app (jar-with-dependencies)

我有一个依赖于大量库的Java应用程序。 我使用Assembly Maven插件将整个内容打包到一个JAR中。

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

我显然不控制使用哪种类型的日志库依赖项。 main使用JDK java.util.logging

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

我试图做什么,建议在这里 (与我的级别设置为变化SEVERE )在我一开始main的,但所有的日志仍然显示。

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

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

如果您想使用繁重的操作,可以通过简单地关闭out和error流来停止所有控制台输出:

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

请记住,没有办法重新打开这些流。

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

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

我显然不控制使用哪种类型的日志库依赖项...

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

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

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

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);
      }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM