Перейти к основному содержимому

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

· 3 мин. чтения

1. Обзор

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

В этом кратком руководстве мы увидим, как избежать входа в консоль при запуске приложения Spring Boot .

Мы упростим задачу с помощью простых примеров, показывающих, как этого добиться, независимо от того, используем ли мы Logback, Log4js2 или даже среду Java Util Logging.

Чтобы узнать больше о фреймворках ведения журнала для Spring Boot, мы предлагаем ознакомиться с нашим руководством по ведению журнала в Spring Boot .

2. Как отключить вывод консоли для входа в систему

Если в нашем проекте используются стартеры Spring Boot , то также будет включена зависимость spring-boot-starter-logging .

Этот конкретный стартер настраивает Logback как платформу по умолчанию и изначально по умолчанию регистрирует только консоль.

Эту конфигурацию можно настроить, добавив файл logback-spring.xml в наши ресурсы.

Например, давайте настроим 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>

Кроме того, нам понадобится свойство конфигурации logging.file в нашем файле application.properties :

logging.file=foreach-disabled-console.log

Примечание: что на самом деле отключает вывод консоли здесь, так это тот факт, что мы не включаем console-appender.xml в наш `файл XML, поэтому пустой тег конфигурации также поможет.`

Кроме того, мы можем избежать создания XML- `` файла, переопределив конфигурацию по умолчанию с помощью свойств приложения .

Например, потенциально мы можем использовать свойство logging.pattern.console :

logging.pattern.console=

Это свойство преобразуется в системное свойство CONSOLE_LOG_PATTERN , которое затем используется конфигурацией консоли Spring по умолчанию.

Этот подход, конечно, не такой чистый и надежный, как предыдущий . Это не является предполагаемой целью свойства, поэтому в какой-то момент этот «хак» может не поддерживаться Logback.

Кроме того, мы можем отключить всю активность ведения журнала, установив значение уровня корневого регистратора на OFF :

logging.level.root=OFF

3. Как избежать входа в консоль с помощью Log4j2

Как мы, возможно, знаем, Log4j2 поддерживает форматы XML, JSON, YAML или свойств для настройки поведения ведения журнала.

Для простоты на этот раз мы просто покажем простой пример файла log4j2.xml .

Другие форматы придерживаются той же структуры конфигурации:

<Configuration status="INFO">
<Appenders>
<File name="MyFile" fileName="foreach.log"
immediateFlush="true" append="false">
<PatternLayout pattern=
"%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>

Как и в случае с настройкой Logback, причина, по которой фреймворк избегает ведения журнала в консоль, заключается не в конфигурации «как таковой», а в том факте, что корневой регистратор не содержит ссылки на консольный аппендер.

4. Как отключить ведение журнала консоли для ведения журнала Java Util

Java Util Logging (или просто «JUL») в настоящее время может быть не самым популярным решением для ведения журналов для приложений Spring Boot.

В любом случае, мы разберем, как нам избавиться от логов консоли, если фреймворк присутствует в нашем проекте.

Все, что нам нужно сделать, это добавить следующие значения в файл logging.properties по умолчанию в нашей папке ресурсов:

handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=foreach.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

И включите свойство logging.file в наш файл application.properties . Любое значение сделает свое дело:

logging.file=true

5. Вывод

С помощью этих коротких примеров мы теперь можем без проблем отключить журналы консоли в нашем приложении, независимо от того, какую среду ведения журналов мы используем.

Как всегда, мы можем найти реализации примеров на Github .