簡體   English   中英

即使將 Additivity 設置為 false,log4j ConsoleAppender 也會打印到控制台兩次

[英]log4j ConsoleAppender printing to console twice even after setting Additivity to false

我有 log4j 附加程序,在 intellIj 中運行程序時將輸出打印到控制台一次在此處輸入圖像描述

但是通過executable.jar運行程序時兩次

在此處輸入圖像描述

寫入日志文件的實際日志只出現一次,這是正確的。

在此處輸入圖像描述

我在這個代碼塊中以編程方式定義了我的記錄器/附加器

一切都完成后,我打電話給

rootLogger.setAdditivity(false);

但由於某種原因,當我作為 a.jar 運行時,我的課程仍然是 output 兩次到命令行控制台。 我通過在頂部定義一個日志變量來調用每個 class 中的記錄器,如下所示:

public class SomeClass {

    static Logger log = Logger.getLogger(SomeClass .class);

並且此日志變量在“SomeClass”class 中隨處使用。

我已經嘗試將所有 package 記錄器的可加性設置為 false 以及在我設置它們的級別之前和之后......

Logger.getLogger("com.company").setAdditivity(false);
Logger.getLogger("com.company.project.database.Admin").setAdditivity(false);
...

但是當我以這種方式運行代碼時,它抱怨它找不到 class 的附加程序,我正在定義所有 log4j 內容,並且沒有任何內容寫入輸出/日志。

I think you are on the right track with additivity, however additivity is a property of a child, telling log4j not to use the parents: https://logging.apache.org/log4net/release/sdk/html/P_log4net_Repository_Hierarchy_Logger_Additivity.htm You已將最終父記錄器的可加性設置為 false ,因為 root 不會是任何東西的孩子,所以它永遠不會做任何事情。

嘗試將每個 package 記錄器的可加性設置為 false,希望這能解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM