Какой регистратор я перечисляю в своем log4j.xml для захвата необработанных распорок 2 исключения?
У меня есть следующий код, объявленный в моем struts.xml:
<package name="default" extends="struts-default">
<interceptor-stack name="defaultStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logCategory">error.unhandled</param>
<param name="logLevel">WARN</param>
</interceptor-ref>
</interceptor-stack>
</package>
В моем файле log4j.xml мне объявили следующий регистратор:
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p [%c] - %C{1}.%M(%L) | %m%n"/>
</layout>
</appender>
<logger name="error.unhandled">
<level value="DEBUG"/>
<appender-ref ref="CONSOLE" />
</logger>
Однако, когда Struts выдает исключение, он правильно не зарегистрирован log4j. Я знаю, что мой log4j.xml анализируется правильно, так как я могу вручную создать класс Java с регистратором, названным "error.unhandled", и уровень ошибки при записи обменивается сообщениями непосредственно к нему. Коллега также предложил, чтобы я попытался захватить log4j.logger.error.unhandled регистратор, но это не работало также.
Какой регистратор Struts 2 использует для перехватчика исключения?
Вы используете WARN уровня журнала в определении перехватчика. Измените это на ERROR, и вы увидите сообщения журнала, или, альтернативно, уменьшите уровень ведения журнала до WARN, INFO или DEBUG в файле log4j.xml.
Другими словами, перехватчик отправляет сообщение на уровне WARN, приложение консоли получает это сообщение, но выбирает не печатать его, потому что он настроен на печать только сообщений на уровне ERROR.
Для вашего регистратора в log4.xml
установлено пороговое значение ОШИБКА
, поэтому все, что зарегистрировано ниже этого уровня, будет не записываться. Конфигурация вашей struts настроена на регистрацию на уровне WARN
, что ниже ERROR
.
Вам, вероятно, следует уменьшить порог в log4j.xml
регистраторе
до WARN
, чтобы получить что-нибудь.