[英]Log4j Configuration issues - log4j:WARN Please initialize the log4j system properly
[英]Please initialize the log4j system properly warning
這是錯誤消息 -
log4j:WARN No appenders could be found for logger (SerialPortUtil).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
這是SerialPortUtil
類中的調用 -
private static final Logger log = Logger.getLogger(SerialPortUtil.class.getSimpleName());
.
.
.
log.info("Serial port " + port.getName() + " is available");
這是我的 log4j.properties 文件的內容 -
log4j.rootLogger=DebugAppender
#Debug logging
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=activityLog.log
log4j.appender.DebugAppender.MaxFileSize=200KB
log4j.appender.DebugAppender.MaxBackupIndex=5
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d{DATE} %t - %m%n
並且屬性文件在類路徑上。
一切對我來說都是正確的,那么發生了什么? DEBUG
閾值不應該也捕獲INFO
日志記錄嗎?
添加代碼
BasicConfigurator.configure();
在您的靜態主類中,如下所示..
注意:添加“\\hadoop-2.7.1\\share\\hadoop\\common\\lib\\commons-logging-1.1.3.jar & \\hadoop-2.7.1\\share\\hadoop\\common\\lib\\log4j-1.2.17.jar” jar " 作為外部引用
import org.apache.log4j.BasicConfigurator;
public class ViewCountDriver extends Configured implements Tool{
public static void main(String[]args) throws Exception{
BasicConfigurator.configure();
int exitcode = ToolRunner.run(new ViewCountDriver(), args);
System.exit(exitcode);
}
}
從錯誤消息中的鏈接:
當無法找到默認配置文件 log4j.properties 和 log4j.xml 並且應用程序未執行顯式配置時,就會發生這種情況。 log4j 使用 Thread.getContextClassLoader().getResource() 定位默認配置文件,不直接檢查文件系統。 知道放置 log4j.properties 或 log4j.xml 的適當位置需要了解正在使用的類加載器的搜索策略。 log4j 不提供默認配置,因為在某些環境中可能禁止輸出到控制台或文件系統。 另請參閱常見問題解答:為什么 log4j 無法在 J2EE 或 WAR 應用程序中找到我的屬性?。
找不到配置文件。 您使用的是 xml 還是屬性文件?
另外,使用logback !
好的,所以我通過改變它來讓它工作
log4j.rootLogger=DebugAppender
對此
log4j.rootLogger=DEBUG, DebugAppender
顯然你必須先指定rootLogger
的日志級別? 如果我浪費了任何人的時間,我深表歉意。
另外,我決定回答我自己的問題,因為這不是類路徑問題。
如果在運行使用 log4j 的程序時遇到錯誤/警告,解決方案是添加類加載器可以看到的 log4j.properties。 通常它在您的 Java 項目的“src”文件夾中:將以下內容添加到文件中
log4j.rootLogger=INFO, 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”放入“src”文件夾中。 它在我的包文件夾中不起作用,它必須是源代碼的根目錄。 將它添加到構建路徑,然后將其移動到“參考庫”也不起作用。
重復:將 log4j.properties 放在 src 文件夾的根目錄下。
我的 log4j.properties 文件具有以下內容,適用於基於 Eclipse 的最新版本的 Spring Tool Suite。
# Configure logging for testing: optionally with log file
#log4j.rootLogger=INFO, stdout
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%
這對我有用:
public static void main(String[] args) {
Properties props = new Properties();
props.load(new FileInputStream("src/log4j.properties"));
PropertyConfigurator.configure(props);
沒有回答的方法解決了在 NetBeans 中找不到非 Maven jsf web 項目的log4j.properties
文件的問題。 所以答案是:
resources
文件夾。Dlog4j.configuration=resources/log4j.properties
我在 log4j 文件中寫了特殊的模式來檢查 log4j 是否用於我的文件:
# Root Logger Option
log4j.rootLogger=INFO, console
# Redirect Log Messages To Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} xxxx (%F:%L) - %m%n
我檢查了它,因為如果你使用BasicConfigurator.configure();
在 log4j 中的代碼中使用預定義的模式。
對我有用的是創建一個 log4j 屬性文件(您可以在網上找到許多示例)並將其放在項目目錄中的屬性文件夾中(如果不存在,則創建此文件夾)。 右鍵單擊文件夾和Build Path->Use as Source Folder
。
希望能幫助到你!
補充一下@Gevorg,如果你在本地運行Spark也有類似情況,把log4j.properties文件放在主文件夾下的resources文件夾下。
嘗試在 main 中執行以下操作:
public static void main(String[] args) {
PropertyConfigurator.configure(args[0]);
//... your code
你需要告訴 log4j 它的配置應該是什么。
只需在 main 方法的開頭配置您的 log4j 屬性文件路徑:例如:PropertyConfigurator.configure("D:\\files\\log4j.properties");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.