Я делаю очень похожую вещь в нашем приложении, в котором я администрирую все журналы.
Я решил проблему, подключив «ErrorConsoleAppender» к моему корневому логгеру. Все регистраторы в моем файле конфигурации являются аддитивными (разумеется, это означает, что они «всплывают» соответствующим образом).
Как можно подозревать, ErrorConsoleAppender отправляет ошибки в консоль и только ошибки. Он работает на удивление хорошо, сохраняя консоль в чистоте, если нет серьезных проблем. Мой код для этого, как показано ниже:
...
<appender name="ErrorConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}] %-5p > %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
...
<root>
<priority value="ALL" />
<appender-ref ref="ErrorConsoleAppender" />
</root>
Конечно, чтобы сделать это так, как вы описали, вам нужно было бы добавить простые вызовы log.error (String), которые не сбрасывают следы стека, как предложено выше Питером.
Если редактирование вызовов log.error (String) нецелесообразно, я бы предложил использовать AspectJ для перекрестной обработки кода и предоставления необходимых вам функций. Даже если вы не знакомы с аспектно-ориентированным программированием, довольно просто добиться того, что вы описали в нем. Фактически, один из основных вариантов использования AOP - это именно тот сценарий, который вы описали. Аспекты отлично подходят для регистрации.
На первый взгляд, наиболее подходящим подходом, в вашем случае, было бы использование синтаксиса «after throwing» для выполнения соответствующих действий регистрации при возникновении определенных исключений.
Я надеюсь, что все это поможет, дайте мне знать, если у вас есть дополнительные вопросы о том, как АОП может решить вашу проблему,
-gMale