Предотвращение Spring Загрузка из журналов печати в консоль

Я использую загрузку spring для своего приложения, и я использую загрузку по умолчанию spring.

В моем application.properties я добавил путь к файлу для logging.file,

        logging.file= ${logger_path}

а мой pom.xml содержит

       <logger_path>/tmp/app.log</logger_path>

Когда я запускаю приложение, он печатает сообщения журнала в файл в /tmp/app.log, но проблема заключается в том, что он также печатает сообщения журнала на консоли. Я действительно не понимаю, почему он печатает на консоли (, хотя он печатает их в указанном файле), когда я указал log file.

Есть ли какая-либо конфигурация, позволяющая предотвратить загрузку spring из печати сообщений журнала на консоль?

Ответ 1

Spring boot поставляется с встроенным регистратором logback, который настроен для печати в консоли по умолчанию.

Вам нужно перезаписать конфигурацию logback (предоставляя свой собственный logback.xml в пути к классам). Это описано здесь - - раздел 66.1

Как отключить ведение журнала журналов читать здесь -

как вы можете видеть, вы должны указать значение OFF... что-то вроде:

<configuration>
  <include resource="base.xml" />
   .
   .
  <property name="root.level.console" value="OFF" />
</configuration>

Примечание. Имейте в виду, что общая идея здесь заключается в том, что конфигурация журнала, поступающая из spring -boot, минимальна. Предполагается, что вы предоставляете свою собственную конфигурацию журнала и полностью перезаписываете существующую. предоставляя собственную конфигурацию журнала с настройкой только файла журнала файла - это должен быть ваш общий подход.

Ответ 2

Включить file-appender.xml, а не console-appender со следующей конфигурацией в logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </configuration>

Вам также нужно добавить logging.file к вашему application.properties

Это соответствует тому, что упоминается в документации по загрузке spring - http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

Ответ 3

Я попытался удалить конфигурацию консоли из logback.xml. Но он все еще входил в консоль. Итак, что я сделал, я просто удалил добавление приложения в конфигурацию регистрации с помощью springboot. Таким образом, мы можем остановить ведение журнала Springboot в консоли и отдельный файл журнала. Добавьте нижеприведенные строки в конце вашего приложения. Ваш пользовательский appender не должен соответствовать ни одному из этих имен appender. Это сработало для меня.

// get instance of your log4j instance
Logger logger = LogManager.getRootLogger();
logger.removeAppender("CONSOLE"); // stops console logging
logger.removeAppender("LOGFILE"); // stops file logging

Ответ 4

Аналогичное обсуждение можно найти здесь.

Мой logback.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>

На всякий случай вы все еще сталкиваетесь с проблемой: я прочитал много дискуссий по этой теме, и она не работала вообще для меня. К сожалению, я сделал очень тупую ошибку, когда я создал файл logback.xml в первый раз: в начале имени файла было добавлено пространство. Поэтому файл никогда не использовался. Поэтому просто посмотрите еще раз на имя файла, добавьте файл в "src/main/resources" и удалите записи "logging.config" из ваших файлов свойств.

Ответ 5

Протестировано с последней версией 1.3.1, с более новыми версиями base.xml было переименовано в defaults.xml

Ответ здесь