i have little question, my log4j.xml configuration is listed below
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
</layout>
</appender>
<logger name="com.alsodeep">
<level value="info" />
<appender-ref ref="console" />
</logger>
<logger name="org.springframework">
<level value="error" />
<appender-ref ref="console" />
</logger>
<root>
<priority value="error" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
and when i call a log.info(“some info”) inside the com.alsodeep package it printed out twice, for example
INFO AspectExample - Call it before method
INFO AspectExample - Call it before method
Hello
INFO AspectExample - Call it after method
INFO AspectExample - Call it after method
List content [[23, 243, 234, 23432]]
INFO App - final
INFO App - final
i’m confused with this, whats wrong with my log4j settings.
PS when i remove appender from root element, everything is ok and my log info appear only once.
Remove:
from particular loggers and leave only one in root logger:
Your configuration is valid, however when you try to log something on
com.alsodeep, it first gets appender to the appender associated directly to this logger and then propagates up.comhas no appender associated, butroot(parent of all loggers) has. By coincidence it is the same console appender, so it gets appended twice.