2015-12-01 4 views
0

Я использую log4j 1.2, и я хочу, чтобы достичь следующее поведение:log4j различные уровни детализации

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

Из документации я догадался, что мне, вероятно, придется определить два разных экземпляра регистратора, которые являются предками или друг другом, и назначить им приложения. Но я не знаю деталей и не знаю, является ли это намеченным способом достижения такого поведения.

Может кто-нибудь, пожалуйста, дайте мне подсказку?

ответ

1

Определите только один регистратор, который влияет на два добавителя файлов: один с ошибкой уровня, а другой с уровнем отладки. Фильтрация уровня будет выполнена в приложении.

<appender name="DebugAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="logs/debug.log" /> 
    <param name="MaxBackupIndex" value="5" /> 
    <param name="MaxFileSize" value="5MB" /> 
    <param name="threshold" value="debug" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %t %-5p %c - %m%n" /> 
    </layout> 
</appender> 
<appender name="ErrorAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="logs/error.log" /> 
    <param name="MaxBackupIndex" value="5" /> 
    <param name="MaxFileSize" value="5MB" /> 
    <param name="threshold" value="error" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %t %-5p %c - %m%n" /> 
    </layout> 
</appender> 
<logger name="mylogger"> 
    <level value="debug" /> 
    <appender-ref ref="DebugAppender" /> 
    <appender-ref ref="ErrorAppender" /> 
</logger> 
+0

Можно ли добавить прямо к String (StringBuffer, StringBuilder, ...) вместо того, чтобы писать в файл и читать это обратно? –

+0

@JFMeier Это должно быть возможно, но я думаю, вам нужно разработать пользовательский appender. – neomega

1

Вы должны иметь возможность использовать один и тот же регистратор и применять фильтр к обработчикам, т. Е. Установить уровень журнала для обработчика консоли (который, как я предполагаю, означает «как строка») до ERROR.

Смежные вопросы