2015-11-16 28 views
0

儘管提出了類似的問題,但我找不到解決方案。我猜是因爲配置不同。控制檯中重複的log4j行

我正在使用第三方jar,但直接使用log4j時也遇到同樣的問題。

我在Eclipse上Mars.1工作

我log4j.properties如下:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 

<root> 
     <level value="ALL" /> 
     <appender-ref ref="consoleAppender"/> 
     <appender-ref ref="fileAppender"/> 
</root> 

<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender" additivity="false"> 
    <param name="Threshold" value="DEBUG" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%X{ThreadId}] %X{MethodName} - %m%n" /> 
    </layout> 
</appender> 

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender" additivity="false"> 
    <param name="Threshold" value="DEBUG" /> 
    <param name="append" value="true" /> 
    <param name="maxFileSize" value="10MB" /> 
    <param name="maxBackupIndex" value="10" /> 
    <param name="File" value="c:\Users\administrator\Eclipse workspaces\mylog-${current.date}.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%X{ThreadId}] %X{MethodName} - %m%n" /> 
    </layout> 
</appender> 

</log4j:configuration> 

這裏是什麼,我在Eclipse控制檯中看到一個例子:

2015-11-16 17:13:33 DEBUG [] - ConferenceId = 4618311 
13082 [main] DEBUG com.log.Log4jWrapperSingleton - ConferenceId = 4618311 
13082 [main] DEBUG com.log.Log4jWrapperSingleton - ConferenceId = 4618311 
13082 [main] DEBUG com.log.Log4jWrapperSingleton - ConferenceId = 4618311 
2015-11-16 17:13:33 INFO [] - SLEEP_BETWEEN_CREATE_TO_TERMINATE_SEC waiting 2000 ms... 
13083 [main] INFO com.log.Log4jWrapperSingleton - SLEEP_BETWEEN_CREATE_TO_TERMINATE_SEC waiting 2000 ms... 
13083 [main] INFO com.log.Log4jWrapperSingleton - SLEEP_BETWEEN_CREATE_TO_TERMINATE_SEC waiting 2000 ms... 
13083 [main] INFO com.log.Log4jWrapperSingleton - SLEEP_BETWEEN_CREATE_TO_TERMINATE_SEC waiting 2000 ms... 

並且每添加一次代碼重複的迭代。如果我現在有3個重複的「SLEEP_BETWEEN_CREATE_TO_TERMINATE_SEC等待」,下一個循環我將有4個...

請問你能提醒一下嗎?

謝謝。

+0

請發佈插入這些日誌語句的代碼部分。 – EkcenierK

+0

我以前見過appender之前一遍又一遍地添加 – Jan

+0

你的代碼是否多次記錄調試/信息消息 - 就像for循環中有類似的東西(i = 0; i <10; ++ i ){log.info(message); } – TR1

回答

0

我期望的問題是在自定義的Log4j的包裝:com.log.Log4jWrapperSingleton

你應該擺脫它。這是非常有可能的服務是新實例自每次調用effectivelly添加新記錄的是ConsoleAppender(我們只能猜測,直到我們看到源)

你可以找到理由在這裏時間:Benefits of Log4j singleton wrapper?