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

标签 java logging java.util.logging

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

相关文章:

java - GSON 和 Flickr API 问题 : JsonParseException when deserializing json

python - 在 flask 应用程序中将用户 ip 和用户 id 添加到日志文件

php - 如何使用 logrotate 在 Laravel 中旋转日志?

python - werkzeug:登录到文件时禁用 bash 颜色

java - 如何在 Spring Boot 中关闭 "NioEndPoint"日志记录?

java - Jersey 2.22 中的 servicelocator impl 关闭问题

java - SQL UNION 查询的 Oracle 性能限制以及如何优化

java - Alfresco通知邮件链接修改

java - 如何使用 java Logger 类记录堆栈跟踪

java - 获取日志处理程序中的行号