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

Настройка журнала с использованием нескольких профилей

Я пытаюсь разбить мой logback.xml профилями под springboot, этот мой подход:

Logback-prod.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="CONSOLE" />
</root>
</configuration> 

Logback-dev.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/console-appender.xml" />

<root level="DEBUG">
    <appender-ref ref="CONSOLE" />
</root>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-${spring.profiles.active}.xml"/>

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

И, наконец, используйте:

-Dspring.profiles.active=dev
 or
-Dspring.profiles.active=prod

Я получил консоль:

13:01:44,673 |-ERROR in [email protected]:16 - no  applicable action for [configuration], current ElementPath  is [[configuration][configuration]]
13:01:44,674 |-ERROR in [email protected]:81 - no applicable action for [include], current ElementPath  is [[configuration][configuration][include]]
13:01:44,674 |-ERROR in [email protected]:89 - no applicable action for [include], current ElementPath  is [[configuration][configuration][include]]
13:01:44,674 |-ERROR in [email protected]:25 - no applicable action for [root], current ElementPath  is [[configuration][configuration][root]]
13:01:44,674 |-ERROR in [email protected]:39 - no applicable action for [appender-ref], current ElementPath  is [[configuration][configuration][root][appender-ref]]
13:01:44,675 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
4b9b3361

Ответ 1

Ну, я нашел одно решение:

Я перемещаю свойство as в свои application.properties, а также удаляю корень тега из файла logback.xml и отлично работаю.

Ответ 2

Spring загрузочная документация рекомендует использовать logback-spring.xml, а не logback.xml, и в нем вы можете использовать тег spring:

<configuration>
  <springProfile name="workspace">
    ...
  </springProfile>
  <springProfile name="dev,prd">
    ...
  </springProfile>
</configuration>

Ответ 3

Если вам нужны разные файлы конфигурации обратного входа для разных профилей, вы можете изменить их в своих application-*.properties.

Например, в ваших application-prod.properties вы можете сказать:

logging.config=src/main/resources/logback-prod.xml

Ответ 4

"Я перемещаю свойство as в мои application.properties, а также удаляю корень тега из logback.xml и работаю нормально".

Я не получаю это письмо. Пожалуйста, объясни.

Я использую весеннюю загрузку 2.x. Я создал файлы свойств на основе профиля, такие как application-dev.properties, application-qa.properties и application-prod.properties.

Таким же образом я создал logback-dev.xml, logback-qa.xml и logback-prod.xml

Достаточно ли интеллектуален Spring для чтения соответствующих файлов регистрации и приложений на основе свойства spring-profile-active? Или нам нужно добавить какую-нибудь запись?

Ответ 5

Я решил эту проблему, установив другой путь в application-dev.properties и application-prod.properties для переменной HOME_LOG и установив динамическое свойство ресурса в файле logback.spring.xml

logback-spring.xml

<property resource="application-${spring.profiles.active}.properties" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %gray(%d{ISO8601}) %highlight(%-5level) [%yellow(%t)] %cyan(%C{1.}): %msg%n%throwable
        </Pattern>
    </layout>
</appender>
<appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${HOME_LOG}/mylog.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${HOME_LOG}/backup/mylog-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <encoder>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
    </encoder>
</appender>

и в application-dev.properties

 HOME_LOG=C:/var/log/myapp/dev

и в application-prod.properties

 HOME_LOG=C:/var/log/myapp/prod