2015-11-16 2 views
0

Хотя схожие вопросы были заданы, я не смог найти решение. Я думаю, потому что конфигурация меняется.Повторяющиеся строки log4j в консоли

Я использую стороннюю банку, но у меня была та же проблема и при использовании 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

Я видел это раньше, когда добавление добавлялось снова и снова – Jan

+0

Многократно записывает ваш код в сообщение debug/info - как в цикле for есть что-то вроде (i = 0; i <10; ++ i) {log.info (сообщение); } – TR1

ответ

0

Проблема, которую я бы ожидать в пользовательской Log4j обертке: com.log.Log4jWrapperSingleton

И вы должны избавиться от него. Это очень вероятно, служит новый экземпляр этого самостоятельно каждый раз, когда она называется effectivelly добавления нового регистратора к ConsoleAppender (мы можем только догадываться, пока мы не увидим источник)

Вы можете найти рассуждения здесь: Benefits of Log4j singleton wrapper?

Смежные вопросы