如何将活动弹簧配置文件注入logback

我正在使用春季启动项目.

环境:

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注入到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-dev或xyz-production,但我得到的是xyz-spring.profiles.active_IS_UNDEFINED.log.

处理办法:

1 – 使用如下组件:

@Component
public class InitializationService implements ApplicationListener<ContextRefreshedEvent> {

// inject spring profile active into logback.xml

}

当然没有工作,因为在Spring Boot应用程序之前,Logback会启动logback.

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.

转载注明原文:如何将活动弹簧配置文件注入logback - 代码日志