2013-01-07 107 views
4

我有一個Java項目(注意: - 它不是一個Web項目)。我使用log4j來記錄消息。如何在項目級別配置log4j?

目前我下面要做的步驟是如下:

  • 創建項目一級的一個log4j.properties文件。

  • Declared Logger logger = Logger.getLogger(MyClass.class);

  • 然後使用 - > PropertyConfigurator.configure(「log4j.properties」);

  • 然後使用logger.debug(「message」);記錄我的消息。

但是我覺得這種方法的問題是我必須做的所有類一樣在我的項目,即從宣佈Logger logger開始的所有步驟。

有什麼辦法讓我可以在我的項目中只在一個地方配置我的記錄器變量,然後只使用記錄器的聲明變量來記錄消息?

+0

看到這個問題和答案:http://stackoverflow.com/questions/7624895/how-to-use-log4j-with-multiple-classes –

回答

4

恕我直言,你不應該有正常的日誌記錄一個常用的日誌配置。每個班級應該在Logger logger = Logger.getLogger(MyClass.class);之前創建自己的記錄器。當你沒有幾個類文件時,這看起來可能是一個開銷,但是最好遵循這一點。
按照這種記錄器模式,您可以靈活地在配置級別(在log4j.properties中)控制任何級別的記錄級別(整個應用程序或任何程序包或任何類)。

您可以在您的類路徑中輸入log4j.properties,log4j會自動將其提取出來。
PropertyConfigurator.configure("log4j.properties");不是必需的。

如果你想這樣做,你可以創建你自己的記錄器類MyLoggerstatic方法記錄將實際的呼叫包裹到記錄器。然後從您的個人課程中,您可以撥打MyLogger.log()MyLogger.debug()進行登錄。

0

您可以通過以下方式

# Set root logger level to DEBUG and its only appender to A1. 
log4j.rootLogger=DEBUG, A1 

# A1 is set to be a ConsoleAppender. 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 

# A1 uses PatternLayout. 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n