Ваша конфигурация очень похожа на мою, где мои журналы сбрасываются в консоль и на некоторый удаленный хост. Попробуйте, чтобы увидеть, работает ли он для вас: -
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
...
</appender>
<appender name="FILE_ALL" class="org.apache.log4j.RollingFileAppender">
...
</appender>
<logger name="a.b.master">
<level value="debug" />
</logger>
<logger name="a.b.master.orm.support.HibernateSessionFilter">
<level value="info" />
</logger>
<logger name="a.b.master.aop.hibernate.OpenSessionInRequestInterceptor">
<level value="info" />
</logger>
<root>
<priority value="info"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_ALL"/>
</root>
</log4j:configuration>
Я не думаю, что вам нужно определять appender-ref
в каждом логгере a.b, так как он должен забирать appender из root. Также я использую priority
вместо logger
для root. В противном случае ваша конфигурация будет идентична моей, и я смогу правильно работать. Если по какой-то причине у вас это не работает, я бы посоветовал вам удалить из конфигурации свои пользовательские логгеры a.b, чтобы посмотреть, сможете ли вы получить сообщения a.b в вашей консоли.
Кроме того, просто к вашему сведению, я уверен, что вы уже знаете это, но если ваш корень настроен на использование «info», тогда на самом деле нет нужды также устанавливать свой собственный регистратор a.b в «info». Я обычно оставляю свой корень, чтобы «предупредить», и мои собственные регистраторы могут переопределить это с помощью «отладки» или «информации».