Я использую log4j, и он работает просто отлично. Файл log4j.xml находится в моем classpath, я использую appender и category ... опять же, он отлично работает для моего кода или кода другой библиотеки.
Но весенние классы продолжают заполнять стандартный вывод сообщением, которое я хочу записать в другом месте. Это начало быть раздражающим.
Оскорбительное сообщение: org.springframework.jms: какая-то ошибка ....
В целом, все классы пакета org.springframework отправляют сообщение на стандартный вывод.
Так что я положил это в свой log4j.xml:
<appender name="JMS-ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="tms.logs.folder/tms.logs.files.prefix-jms-error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="1000KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="**DVIDEA** %d{dd.MM.yyyy HH:mm:ss} %c %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<category name="org.springframework.jms" additivity="false">
<appender-ref ref="JMS-ERROR"/>
</category>
Это работа с другими библиотеками. Почему не весна?
Я провожу некоторые исследования, и кажется, что Spring использует обычное ведение журнала, а не log4j. Это возможная причина? Есть обходной путь?
Я попытался добавить log4jConfigurationListener в мой web.xml. он работает, но я до сих пор не имею никакого контроля над сообщением об ошибке пружины.
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>10000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Редактировать:
Дополнительная информация:
- я использую Tomcat 5.5
- log4j.property (старая конфигурация log4j) все еще присутствует по исторической причине. Я попытаюсь удалить его => без изменений.
РЕДАКТИРОВАТЬ 2:
Я использую следующий обходной путь, но я не доволен им: он не настраивается
java.util.logging.Logger springLogger = Logger.getLogger("org.springframework.jms");
springLogger.setLevel(Level.OFF);