2012-06-16 60 views
2

我有這個非常簡單的scala應用程序。它所做的只是初始化一個記錄器並執行一個logger.info(「Hello」)。我有一個具有以下設置log4j:WARN沒有找到appender

# Root logger option 
log4j.rootLogger=INFO, stdout 

# Direct log messages to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

然而,當我嘗試運行應用程序的類路徑的log4j.properties文件。我得到了錯誤 log4j:警告沒有appender可以找到記錄器(app.TestApp $)。 log4j:WARN請正確初始化log4j系統。

我錯過了什麼?然而,如果我在類路徑中有hadoop-core.jar,我會得到日誌打印出來(是的,裏面還有一個log4j)

回答

6

即使您認爲它是,您的log4J配置文件也不在類路徑中。 解決這個問題最簡單的方法是添加-Dlog4j.debug到VM參數,然後Log4J的將跟蹤它使用發現其配置的算法:

scala -cp {yourclasspath} -Dlog4j.debug {yourscalaentrypoint} 

不幸的是@Jens'答案不是你的時候幫你因爲Scala不使用標準的Java系統屬性來存儲它的類路徑,所以它正在運行一個Scala程序。當你需要打印出用於Scala程序的類路徑時,你應該使用類似this technique的東西。

1

聽起來像你的屬性文件在類路徑中找不到。打印出類路徑(系統屬性java.class.path)以驗證發生了什麼。

相關問題