Подтвердить что ты не робот

Отключение журнала Spring для чтения журналов

Как отключить журналы Spring, чтобы иметь записи журнала, которые я могу легко прочитать, или кто-то еще может читать. Ответ на аналогичный вопрос в как отключить журнал загрузки Spring bean, предложил прокомментировать все строки, имеющие org.springframework substring в log4j.properties file. В моем случае таких строк нет.

Вот log4j.properties

# Define the root logger with appender file
log4j.rootLogger = DEBUG, stdout

# Define the file appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# Set the name of the logs destination
log4j.appender.stdout.target=System.out

# Set the immediate flush to true (default)
log4j.appender.stdout.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.stdout.Threshold=debug

# Set the append to false, overwrite
log4j.appender.stdout.Append=false

# Define the layout for appender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{yyyy-MM-dd}:%m%n 
4b9b3361

Ответ 1

Ваш журнал регистрации по умолчанию для всего, что явно не указано, DEBUG. Итак, все регистрируется на этом уровне (судя по вашей конфигурации), в основном вы наводняете свои журналы. Вам не следует удалять регистраторы для org.springframework, вы должны добавить их и установить для них еще один уровень.

log4j.logger.org.springframework=INFO 

или любой уровень уровня журнала, который вам нравится.

Ответ 2

Прежде чем вы это сделаете, вы должны получить некоторые знания:

1.How to add maven dependency 
2.Where to put log4j configuration file

ОК, вернитесь к вопросу. Верхний ответ не работает для spring 4.x, если вы используете spring4.x, попробуйте выполнить следующие шаги:

  • удалите common-logging из spring-core

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.4.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    Без этого шага, независимо от того, что вы вложили в файл конфигурации log4j, не работает, потому что spring использует common-logging мой мальчик!
    PS: Внутри модулей spring spring-core - единственный модуль, который явно зависит от commons-logging.

  • Добавьте SLF4J и log4j

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
    
  • настроить log4j.properties(вы также можете использовать файл xml)

    log4j.rootCategory = INFO, stdout

    log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {АБСОЛЮТ}% 5p% t % c {2}:% L -% m% n

    log4j.category.org.springframework.beans.factory = INFO

Теперь раздражающий журнал отладки spring уходит. Наслаждайтесь кодированием!

Ответ от spring.io doc, для начала нажмите здесь

Ответ 3

Вы можете указать требуемое имя пакета, как показано в следующем примере:

log4j.logger.com.foo=WARN

Теперь вы можете видеть только журналы WARN, ERROR и FATAL на консоли.

Ответ 4

Все ответы приводили примеры с конфигурацией в log4j.properties, что и было задано. У меня была та же проблема, но я использовал конфигурацию в log4j2.xml, и ответы здесь приводят меня к решению.

Если кто-то находится на той же лодке, что и я, вот что я сделал: я добавил регистратор node с именем org.springframework и уровнем WARN, как показано в следующем примере:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.springframework" level="WARN"/>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Я использую Spring Boot и исключение, которое я делаю, является logback-classic, как показано в следующем фрагменте:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Ответ 5

Я тоже столкнулся с этой проблемой. Журналирование Springframework не удалялось даже после конфигурации log4j. Затем я обнаружил, что его ведение журнала зависит от общего доступа к журналам.

Вы должны отключить commons-logging от зависимости в файле pom.xml веб-приложения.

Даже после удаления commons-logging из pom.xml проверьте иерархию зависимостей, доступную в Eclipse или STS IDE. Это поможет узнать, как-то его добавление из-за какого-то другого управления зависимостями, о котором мы не можем знать.

После удаления зависимостей просто добавьте log4j.logger.org.springframework=ERROR в конфигурацию log4j. Это поможет.