簡體   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