Logback: как регистрировать только ошибки в файле

Я читал руководство по журналу в течение 2 часов и все еще не могу понять, как сделать то, что мне нужно.

Это так же просто, как в заголовке: я хочу записывать только ошибки в файл, а другие уровни (включая ERROR) на консоль.

Это корневой раздел моего файла logcat.xml:

    <root level="TRACE" >
        <appender-ref ref="CONSOLE_APPENDER" />
        <appender-ref ref="FILE_APPENDER" />
    </root>

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

Я мог бы разрешить корневому файлу только консолью и определить файловый регистратор:

    <logger name='file_logger' level='ERROR' >
        <appender-ref ref="FILE_APPENDER" />
    </logger>

Но тогда мне придется вызвать обычный регистратор следующим образом:

LoggerFactory.getLogger(ClientClass.class);

И регистратор файлов выглядит так:

LoggerFactory.getLogger("file_logger");

Я не хочу выбирать регистратор для каждого класса. Я просто хочу получить корневой регистратор из factory, используя параметр class как параметр, и заставить его делать правильную вещь в зависимости от уровня.

Возможно ли это?

Ответ 1

Поместите это в определение вашего файла:

    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>

ThresholdFilter находится в logback-classic.jar.