gpt4 book ai didi

java - 如何将 active spring profile 注入(inject) logback

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:23 25 4
gpt4 key购买 nike

我正在使用 spring boot 项目。

环境:

ch.qos.logback:logback-core:jar:1.1.5
ch.qos.logback:logback-classic:jar:1.1.5
org.springframework.boot:spring-boot-starter-logging:jar:1.3.3.RELEASE

在我的项目中,我使用 application.yml 的属性(application-dev.yml 和 application-production.yml)

由于 Logback Spring 扩展在 Spring 之前启动,因此我无法将 spring.profiles.active 注入(inject)到 logback.xml 文件中。

这是我的 logback.xml 文件的简化版本:

<configuration scan="true">

<property name="LOG_PATH" value="/var/log/" />
<property name="APP_NAME" value="xyz" />
<property name="PROFILE" value="-${spring.profiles.active}" />
<property name="CHARSET" value="utf-8" />
<property name="PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />

<appender name="APP-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}${APP_NAME}${PROFILE}.log</file>
<encoder>
<charset>${CHARSET}</charset>
<Pattern>${PATTERN}</Pattern>
</encoder>
</appender>

<logger name="a.b.c" level="INFO">
<appender-ref ref="APP-FILE" />
</logger>

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

我正在寻找的 PROFILE 是属性 spring.profiles.active

我的目标是在目录 /var/log 文件 xyz-devxyz-production 上有一个日志文件,但我得到xyz-spring.profiles.active_IS_UNDEFINED.log 而不是当然。

方法:

1 - 使用像这样的组件:

@Component
public class InitializationService implements ApplicationListener<ContextRefreshedEvent> {

// inject spring profile active into logback.xml

}

当然不起作用,因为 logback Spring 扩展在 Spring Boot 应用程序之前启动。

2 - 像这样在 logback.xml 上使用属性

<file>${LOG_PATH}${APP_NAME}${PROFILE}.log</file>

结果是xyz-spring.profiles.active_IS_UNDEFINED.log

最佳答案

回答有点晚了,但我已经通过将我的“logback.xml”文件重命名为“logback-spring.xml”成功地记录了 Spring 配置文件,并像这样(大大)简化了版本访问了配置文件

<springProperty scope="context" name="ACTIVE_PROFILE" source="spring.profiles.active"/>

<appender name="GRAYLOG" class="com.github.pukkaone.gelf.logback.GelfAppender">

<additionalField>environment=${ACTIVE_PROFILE}</additionalField>

</appender>

<root level="WARN">
<appender-ref ref="GRAYLOG" />
</root>

似乎“logback-spring.xml”可以提取配置文件信息。

具体documentation is here .

关于java - 如何将 active spring profile 注入(inject) logback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com