2009-10-31 21 views
4

我希望一切都登錄到控制檯,不想處理創建log4j.xml文件等。我原型化一些庫,並希望看到他們的完整日誌輸出。什麼是在你的主要方法中獲得初始化log4j的最短途徑?

我想保持儘可能的純,而不必引入不必要的依賴像彈簧等

+0

@Nick。你對「log4j.xml」或屬性文件有什麼等價的?你是否試圖讓人們難以量身定製伐木? – 2009-11-01 01:48:03

+0

這個特定的應用程序將被除我以外的其他人所使用,我也沒有預見過要控制個人記錄器的日誌級別。維護沒有任何好處很麻煩(imo) – 2009-11-01 06:13:53

回答

6

我使用以下命令:

Logger.getRootLogger().setLevel(Level.ALL); 
Layout layout = new PatternLayout("%d [%t] %-5p %c %x - %m%n"); 
Logger.getRootLogger().addAppender(new ConsoleAppender(layout)); 
1

看來這做的伎倆。

import org.apache.log4j.BasicConfigurator; 

public class Main { 

    private static void initializeLogger() { 
     BasicConfigurator.configure(); 
    } 

    public static void main(String args[]) { 
     Main.initializeLogger(); 
    } 
} 
+1

您可以內聯它。只需調用BasicConfigurator.configure()。 – 2009-10-31 20:44:38

+0

如果我想要一個更復雜的方案,我只能保護未來。 – 2009-10-31 22:43:04

+0

好的,但那麼靜態記錄器變量的名稱是什麼? – djangofan 2017-12-10 22:32:49

1

最簡單的方法是在classpath的根目錄(即你的源或資源文件夾)下面的代碼放到一個文件log4j.properties

log4j.rootLogger=info, 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=[%p] %c{2} %m%n 
+0

Downvoted,因爲我特別說明我不想要log4j.xml(與屬性相同) – 2009-10-31 22:43:37

+0

我不同意 - 基於XML的配置要麻煩得多。基於屬性的特性很好理解,非常傳統,在代碼中做其他任何事情只會讓其他開發人員更難理解你在做什麼。 – Ramon 2009-10-31 23:05:26

+0

我建議將你的文章與@ rsp整合在一起,以使文章更加簡潔明瞭。 – 2009-11-01 06:14:42

0

您可以建立一個屬性集合與需要的值並將其傳遞給PropertyConfigurator.configure(Properties)方法。

1

如果你想留出配置文件的完全,你可以做簡單的配置在幾行是這樣的:

Properties props = new Properties(); 
props.setProperty("log4j.appender.CONSOLE",org.apache.log4j.ConsoleAppender"); 
props.setProperty("log4j.appender.CONSOLE.Threshold", "TRACE"); 
props.setProperty("log4j.appender.CONSOLE.layout,"org.apache.log4j.PatternLayout"); 
props.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern","%-5p %d{HH:mm:ss} %-30C{1} | %m%n);" 
props.setProperty("log4j.rootLogger", "TRACE, CONSOLE"); 
PropertyConfigurator.configure(props); 
相關問題