Logback не регистрируется для INFO и ERROR

Мне нужно регистрировать информацию и ошибки в отдельных файлах. Я попробовал приведенную ниже конфигурацию. Хотя я получил журналы для CACHE-AUDIT и SERVICE_AUDIT, для информации и журнала ошибок ничего не печатается. Я пропустил некоторые настройки здесь.

logback.xml

<property name="LOG_HOME" value="E:\\logs"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

<appender name="CACHE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/cache-service.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>cache-service.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>7</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} - %msg%n
        </Pattern>
    </encoder>
</appender>

<appender name="FILE-ERROR"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/error.log</file>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>error.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>7</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} - %msg%n
        </Pattern>
    </encoder>
</appender>

<appender name="FILE-INFO"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/info.log</file>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>info.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>5</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} - %msg%n
        </Pattern>
    </encoder>
</appender>

<appender name="SERVICE-AUDIT"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/service-audit.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>service-audit.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>5</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} - %msg%n
        </Pattern>
    </encoder>
</appender>

<logger name="ch.base.cache" level="debug" additivity="false">
    <appender-ref ref="CACHE-AUDIT"/>
</logger>

<logger name="ch.base.service.client" level="debug" additivity="false">
    <appender-ref ref="SERVICE-AUDIT"/>
</logger>

<logger name="ch.base" level="info">
    <appender-ref ref="FILE-INFO"/>
</logger>

<logger name="ch.base" level="error">
    <appender-ref ref="FILE-ERROR"/>
</logger>

<root level="debug">
     <appender-ref ref="STDOUT"/>
</root>

1 ответ

Решение

У вас есть два регистратора с одинаковым именем. Тот, с level="error" конечно, помешает другому получить что-нибудь ниже ERROR. Хотя я не совсем уверен, почему вы не видите ни одной регистрации ошибок.

Попробуйте объединить эти два блока:

<logger name="ch.base" level="info">
    <appender-ref ref="FILE-INFO"/>
</logger>

<logger name="ch.base" level="error">
    <appender-ref ref="FILE-ERROR"/>
</logger>

в:

<logger name="ch.base" level="info">
    <appender-ref ref="FILE-INFO"/>
    <appender-ref ref="FILE-ERROR"/>
</logger>
Другие вопросы по тегам