Требуется решение для ошибок веб-приложений от Tomcat, пытающегося регистрировать события после удаления регистратора

Среда: JSF 2.0, RichFaces 3.3.3, Facelets 1.1.15B1, Spring Framework 3.x, WebFlow 2.1, MyBatis 3.0.1, серверная часть Oracle 10/11 g, SLF4j в Log4j. Что ж, вероятно, это TMI, поскольку моя проблема связана только с проблемой регистрации, но лучше быть слишком тщательной, чем нет.

В любом случае ... Я просто настроил SLF4j и log4j, так что теперь все сообщения журнала внутренних фацлетов сбрасываются в log4j, и я могу их видеть. Кроме того, я установил Tomcat для дампа в log4j вместо пользовательской версии JULI. После этого все работало отлично ... пока я не закрыл приложение.

В середине процесса завершения работы мое приложение начало устранять ошибки слева и справа, потому что (что имеет смысл) Tomcat пытается захватить экземпляр регистратора ПОСЛЕ того, как spring уже очистил bean-компонент регистратора.

Кто-нибудь знаком с этим? Я полагаю, что это обычная проблема для всех, у кого есть Tomcat, использующий нестандартный механизм ведения журнала. Как лучше всего обойти это?

Я подумал, может быть, если я просто подниму уровень журнала, Tomcat даже не будет пытаться регистрировать сообщения из-за уровня req.s, но проблема возникает, когда tomcat пытается получить экземпляр журнала, поэтому это не сработало.


person BreakerOfStones    schedule 18.08.2010    source источник


Ответы (1)


Я бы переместил Logger выше в пищевой цепочке.

Я лично никогда не настраивал log4j с помощью Spring, полагаясь на его собственный механизм конфигурации (и охотясь за тем, где, черт возьми, он находит файл свойств, который он использует в процессе).

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

person Peter Tillemans    schedule 18.08.2010
comment
Хорошо, это имеет смысл. Что мне, вероятно, следует сделать, так это иметь log4j для ведения журнала веб-приложений и оставить JUL Tomcat полностью независимым. Чтобы использовать re-Director log4j, вам в любом случае понадобится JUL, так что я не добавляю зависимость. Глядя на это ретроспективно, все имеет смысл. Я думаю, что log4j хорошо подходит для ведения журнала на уровне веб-приложений (имеет гораздо большую степень детализации, чем JUL). А отсутствие детализации в JUL делает его лучшим кандидатом для ведения журнала более высокого уровня, например, в Tomcat. Спасибо, Питер! - person BreakerOfStones; 19.08.2010