Порог весенней регистрации не устанавливается logback


Я работаю с Spring (Core / Security / ldap и многое другое) и logback. Но по какой-то причине spring не получает порог логгина, установленный в XML logback Я могу видеть это также, когда я отлаживаю исходный код springs, и я вижу, что

final boolean debug = logger.isDebugEnabled();

Является ложным

Также я хотел бы упомянуть (я не знаю, имеет ли это какое-либо отношение), что регистратор, который использует spring, является:

org.apache.commons.logging.LogFactory
org.apache.commons.logging.Log

И не SLF4j, как я использую

Итак, как я должен включить уровень отладки и принесите журналы в мою конфигурацию SLF4J..

Спасибо

3 4

3 ответа:

Spring по умолчанию использует библиотеку журналов Jakarta Commons от Apache. Вам нужно отключить его и вместо этого использовать мост slf4j. Вы должны иметь следующее (среди прочих)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Logging -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${logback.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>

Тогда ваша logback.xml или другая конфигурация может установить уровень журнала. Например,

<logger name="org.springframework" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

Добавьте следующую зависимость в ваш pom.xml-файл:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.6</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.6.6</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.0.7</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.0.7</version>
    </dependency>

И добавьте следующие строки в свой логбэк.xml-файл:

<logger name="org.springframework.web.client.RestTemplate"
    level="DEBUG" />
<logger name="org.springframework.web.servlet" level="OFF" />
<logger name="org.springframework.beans" level="OFF" />
<logger name="org.springframework.core" level="OFF" />
<logger name="org.springframework.context" level="OFF" />
<logger name="org.springframework.ui" level="OFF" />
<logger name="org.springframework.web.context" level="OFF" />
<logger name="org.springframework.aop" level="OFF" />
<logger name="org.springframework.cache" level="OFF" />
<logger name="org.springframework.jndi" level="OFF" />

Вы можете установить уровень в соответствии с вашим требованием, или если вы хотите отключить весь уровень журнала весны, то просто добавьте одну строку:

<logger name="org.springframework" level="OFF" />

Заменить commons-logging.jar на jcl-over-slf4j.jar. В документации spring это подробно объясняется.