2013-06-19 52 views
0

abc我試圖使用log4j API在兩個不同的日誌文件中記錄消息。下面是我的log4j.xml無法登錄不同的文件:Log4j

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

<appender class="org.apache.log4j.RollingFileAppender" name="OnlineFile"> 
    <param value="UTF-8" name="Encoding"/> 
    <param value="D://abc//logs//Online.log" name="File"/> 
    <param value="500" name="MaxBackupIndex"/> 
    <param value="10000KB" name="MaxFileSize"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param value="%d{ISO8601} : %-6.6c : %-5p : %X{APP} : %-7X{USER} : %-2X{MODULE} : %-20X{REFDATA} : %m%n" name="ConversionPattern"/> 
    </layout> 
</appender> 
<appender class="org.apache.log4j.RollingFileAppender" name="ABCFile"> 
    <param value="UTF-8" name="Encoding"/> 
    <param value="D://abc//logs//Sample.log" name="File"/> 
    <param value="500" name="MaxBackupIndex"/> 
    <param value="10000KB" name="MaxFileSize"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param value="%d{ISO8601} : %-6.6c : %-5p : %X{APP} : %-7X{USER} : %-2X{MODULE} : %-20X{REFDATA} : %m%n" name="ConversionPattern"/> 
    </layout> 
</appender> 
<logger name="Online"> 
    <level value="debug"/> 
</logger> 
<logger name="ABC"> 
    <level value="INFO"/> 
    <appender-ref ref="ABCFile"/> 
</logger> 
<root> 
    <level value="debug"/> 
    <appender-ref ref="OnlineFile"/> 
</root> 

它是某種只登錄Online.log.Even獲取使用以下方式無法登錄Sample.log

Logger.getLogger("ABCFile").info("My message"); 

正確無法弄清楚什麼是錯的!任何幫助?

+0

您需要在'' –

回答

0

「ABCFile」是你的appender的名字,你的日誌被命名爲「ABC」。請嘗試:

Logger.getLogger("ABC").info("My message"); 
+0

中更改文件名是的!謝謝:-) 另一個疑問,雖然我這樣做,它也記錄到其他文件是Online.log?爲什麼? log4j記錄器中的 – shabeena

+0

是分層的,如果沒有爲記錄器指定明確的父親,則隱式使用根記錄器,因此記錄器接受的每個消息(取決於其級別)也將記錄到其所有appender父母爬上層次結構(在你的情況下,只是根記錄器)。可以通過將子記錄器的「additivity」屬性設置爲false來禁用此行爲,從而「阻止」日誌消息的傳播。有關詳細信息,請查看[log4j manual](http://logging.apache.org /log4j/1.2/manual.html) – Grim

+0

是的,我做到了。最後一個查詢可以爲兩個記錄器定義相同的級別(比如DEBUG)? – shabeena

0

check getLogger()API。您應該使用記錄器名稱而不是文件附件名稱。更改下面的代碼。 Logger.getLogger(「ABC」)。info(「My message」);

+0

感謝您的回答:-) – shabeena