Spring Boot: логирование, расширения Logback

Spring Boot включает в себя несколько расширений Logback, которые могут помочь с расширенной настройкой. Вы можете использовать эти расширения в файле конфигурации logback-spring.xml.

Поскольку стандартный файл конфигурации logback.xml загружается слишком рано, в нем нельзя использовать расширения. Вам нужно либо использовать logback-spring.xml, либо определить свойство logging.config.

Расширения не могут быть использованы при сканировании конфигурации Logback. Если вы попытаетесь это сделать, внесение изменений в файл конфигурации приведет к ошибке, аналогичной одной из следующих:

ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]

Конфигурация для конкретного профиля

Тег <springProfile> позволяет при желании включать или исключать разделы конфигурации на основе активных профилей Spring. Разделы профиля поддерживаются в любом месте элемента <configuration>. Используйте атрибут name, чтобы указать, какой профиль принимает конфигурацию. Тег <springProfile> может содержать простое имя профиля (например, staging) или выражение профиля. Выражение профиля позволяет выразить более сложную логику профиля, например, production & (eu-central | eu-west). Следующий листинг показывает три примера профиля:

<springProfile name="staging">
    <!-- конфигурация, которая будет применена когда активен профиль "staging" -->
</springProfile>

<springProfile name="dev | staging">
    <!-- конфигурация, которая будет применена когда активен профиль "dev" или "staging" -->
</springProfile>

<springProfile name="!production">
    <!-- конфигурация, которая будет применена когда профиль "production" не активен -->
</springProfile>

Свойства Environment

Тег <springProperty> позволяет вам выставлять свойства из Spring Environment для использования в Logback. Это может быть полезно, если вы хотите получить доступ к значениям из файла application.properties в конфигурации Logback. Этот тег работает аналогично стандартному тегу Logback <property>. Однако вместо указания прямого value вы указываете source свойства (из Environment). Если вам нужно сохранить свойство где-то, кроме локальной области, вы можете использовать атрибут scope. Если вам нужно запасное значение (если свойство не задано в Environment), вы можете использовать атрибут defaultValue. В следующем примере показано, как предоставить свойства для использования в Logback:

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>

source должен быть указан в kebab case (нижний регистр с разделением в виде дефисов) (например, my.property-name). Тем не менее, свойства могут быть добавлены в Environment с помощью смягченных правил.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки