搜尋

首頁  >  問答  >  主體

java使用log4j如何不用每次呼叫都宣告一下?

每次寫個新的類,就要在下面聲明下:

private static Logger logger = Logger.getLogger(Test.class);  

這樣的話不是很麻煩嗎?有沒有辦法,把Logger設定成可以靜態呼叫的類,直接呼叫info,error等方法,同時還可以列印出目前類別、線程號等資訊?

为情所困为情所困2787 天前655

全部回覆(3)我來回復

  • 漂亮男人

    漂亮男人2017-05-17 10:06:39

    你大可以簡單封裝一下實現你要的目的,例如建個類別把Logger封裝進去,暴露幾個靜態介面出來。至於為什麼很多程式碼書寫的時候寫成private static Logger logger = Logger.getLogger(Test.class);,其實主要是為了提高日誌的彈性、準確度等。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-17 10:06:39

    看看這個 /a/11...

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-17 10:06:39

    聲明log是因为他可以定义不同的logger name可以通过logger name定制自己的输出方式, 比如level, appender...等

    如果你的日誌是以相同的方式處理那你完全可以聲明公共的静态 log 对象, 需要的地方使用该log也不存在重複聲明的情況了.
    如:

    import static xxx.GlobalLogs.log;
    
    log.debug("...");
    log.info("...");
    //...

    當然你也可以用 lombok 的方式來簡化你的程式碼.

    回覆
    0
  • 取消回覆