虽然提出了类似的问题,但我找不到解决方案。我猜是因为配置不同。
我正在使用第三方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 :(得分:0)
我期望的问题在于您的自定义Log4j包装器:com.log.Log4jWrapperSingleton
你应该摆脱它。每当它被称为有效地向ConsoleAppender添加新的记录器时,它很可能为它自己提供新的实例(我们只能在我们看到源代码之前猜测)
您可以在此处找到推理:Benefits of Log4j singleton wrapper?