我希望一切都登錄到控制檯,不想處理創建log4j.xml文件等。我原型化一些庫,並希望看到他們的完整日誌輸出。什麼是在你的主要方法中獲得初始化log4j的最短途徑?
我想保持儘可能的純,而不必引入不必要的依賴像彈簧等
我希望一切都登錄到控制檯,不想處理創建log4j.xml文件等。我原型化一些庫,並希望看到他們的完整日誌輸出。什麼是在你的主要方法中獲得初始化log4j的最短途徑?
我想保持儘可能的純,而不必引入不必要的依賴像彈簧等
我使用以下命令:
Logger.getRootLogger().setLevel(Level.ALL);
Layout layout = new PatternLayout("%d [%t] %-5p %c %x - %m%n");
Logger.getRootLogger().addAppender(new ConsoleAppender(layout));
看來這做的伎倆。
import org.apache.log4j.BasicConfigurator;
public class Main {
private static void initializeLogger() {
BasicConfigurator.configure();
}
public static void main(String args[]) {
Main.initializeLogger();
}
}
您可以內聯它。只需調用BasicConfigurator.configure()。 – 2009-10-31 20:44:38
如果我想要一個更復雜的方案,我只能保護未來。 – 2009-10-31 22:43:04
好的,但那麼靜態記錄器變量的名稱是什麼? – djangofan 2017-12-10 22:32:49
最簡單的方法是在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
Downvoted,因爲我特別說明我不想要log4j.xml(與屬性相同) – 2009-10-31 22:43:37
我不同意 - 基於XML的配置要麻煩得多。基於屬性的特性很好理解,非常傳統,在代碼中做其他任何事情只會讓其他開發人員更難理解你在做什麼。 – Ramon 2009-10-31 23:05:26
我建議將你的文章與@ rsp整合在一起,以使文章更加簡潔明瞭。 – 2009-11-01 06:14:42
您可以建立一個屬性集合與需要的值並將其傳遞給PropertyConfigurator.configure(Properties)
方法。
如果你想留出配置文件的完全,你可以做簡單的配置在幾行是這樣的:
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);
@Nick。你對「log4j.xml」或屬性文件有什麼等價的?你是否試圖讓人們難以量身定製伐木? – 2009-11-01 01:48:03
這個特定的應用程序將被除我以外的其他人所使用,我也沒有預見過要控制個人記錄器的日誌級別。維護沒有任何好處很麻煩(imo) – 2009-11-01 06:13:53