Один appender для нескольких logger

<configuration>
    <property name="defaultConsolePattern"
              value="%d{yyyy-MM-dd HH:mm:ss} [%logger] %highlight(%-5level) %-3L - %m %n" />
    <property name="defaultFilePattern"
              value="%d{yyyy-MM-dd HH:mm:ss} %-5level : %m %n" />
    <property name="mainLogFilePattern"
              value="%d{yyyy-MM-dd HH:mm:ss} [%file:%line] %-5level %m%n"/>


    <appender name = "MAIN_LOG_FILE" class = "ch.qos.logback.core.FileAppender">
        <file>какой-то путь${file.separator}mainLogFile.log</file>
        <encoder>
            <pattern>${mainLogFilePattern}</pattern>
        </encoder>
    </appender>

    <appender name = "ADDITIONAL_FILE" class = "ch.qos.logback.core.FileAppender">
        <file>какой-то путь${file.separator}additionalLogFile.log</file>
        <encoder>
            <pattern>${defaultFilePattern}</pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <target>System.out</target>
        <encoder>
            <pattern>${defaultConsolePattern}</pattern>
        </encoder>
    </appender>

    <root level = "all">
        <appender-ref ref = "MAIN_LOG_FILE" />
        <appender-ref ref = "STDOUT" />
    </root>

    <logger name = "additional" level = "all" additivity="false">
        <appender-ref ref = "ADDITIONAL_FILE" />
        <appender-ref ref = "STDOUT" />
    </logger>

</configuration>

Для определённых данных требуется выводить часть информации не в общий файл логов, а в отдельный, для этого был создан отдельный logger (additional) и appender (ADDITIONAL_FILE). При этом по-прежнему нужно выводить данные в консоль, для чего и в root логгере и в additional используется appender STDOUT.

Но, как оказалось, при такой конфигурации, если создаётся НЕ additional логгер (создаём через slf4j, например по имени класса), то данные в System.out не выводятся.

Как это можно решить и в чём собственно ошибка?


Ответы (0 шт):