簡體   English   中英

正確初始化log4j系統

[英]Properly initialize log4j system

我正在嘗試為我的項目設置log4j。 我找到了教程,我按照其每個步驟進行操作。

當然,我已將jar文件添加到“ 參考庫”中 下圖顯示了log.out文件的路徑在PATH變量中。 這是我的PATH變量的樣子(只是一個片段):

在此處輸入圖片說明

下圖顯示了log4j jar文件和log4j.properties文件的路徑在CLASSPATH變量中。 這是我的CLASSPATH:

在此處輸入圖片說明

log4j.properties文件(與前面提到的教程的.properties示例相比,我唯一更改的是log4j.appender.FILE.File ):

在此處輸入圖片說明

這是我的項目層次結構的樣子:

在此處輸入圖片說明

我正在使用以下課程進行測試:

package test;

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;

public class Log4jExample{
    /* Get actual class name to be printed on */
    static Logger log = Logger.getLogger(Log4jExample.class.getName());

    public static void main(String[] args) throws IOException,SQLException{

        log.debug("Hello this is an debug message");
        log.info("Hello this is an info message");
    }
}

我一直收到以下異常,並且沒有任何日志記錄到指定的文件:

在此處輸入圖片說明

嘗試遵循WARN消息中指定的鏈接時,我找到了以下答案:

當找不到默認配置文件log4j.properties和log4j.xml並且應用程序不執行任何顯式配置時,會發生這種情況。

為什么找不到log4j.properties? 如何解決呢?

注意:我已經看到有很多有關這些特定WARN消息的文章,但是,我既沒有maven項目,也沒有動態Web項目。 這是一個普通的Java項目,我只是嘗試測試log4j。 我有Windows 7,並使用Eclipse Luna。

更新:看來,如果我將log4j.properties文件移動到src文件夾,一切都會很好。 如何修改文件以從當前文件結構正常工作?

更新#2:我在下面標記為接受的答案回答了我來自更新的問題。 但是,我也發現這篇文章提出了一個有用的解決此位置問題的方法。

默認情況下,Log4j在類路徑的根目錄下搜索配置文件( log4j.xmllog4j.properties )。 將其自動放入src文件夾即可。

如果您不希望在此放置它,可以通過系統屬性log4j.configuration告訴Log4j在哪里尋找它。 然后啟動您的應用程序: java -Dlog4j.configuration=file:"D:\\..." -jar myapp.jar 在Eclipse中,系統屬性是在“運行配置>參數> VM參數”中配置的。

默認情況下,Log4j在類路徑的根目錄下搜索配置文件( log4j.xmllog4j.properties )。 將其自動放入src文件夾即可。

嘗試這個:

  private static Logger logger = LogManager.getLogger(<<YOURCLASSNAME>>.class.getName()); public static void main(String[] args) { /* * use DOMConfigurator class * to initialize the log4j environment * using a DOM tree * */ DOMConfigurator.configure("log4j.xml"); logger.info("your info"); 

我已經在log4j.xml中配置了log4j屬性

//樣本log4j.xml

 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="fileAppender" class="org.apache.log4j.FileAppender"> <param name="Threshold" value="INFO" /> <param name="File" value="logfile.log" /> <layout class="org.apache.log4j.PatternLayout" > <param name="ConversionPattern" value="%d %-5p [%c] %m %n" /> </layout> </appender> <root> <level value="INFO"/> <appender-ref ref="fileAppender"/> </root> </log4j:configuration> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM