概述:
我在我的logback.xml文件中使用Sentry appender,我希望将大量标签作为参数从application.properties文件传递到logback配置文件。
logback.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"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="SENTRY" class="com.getsentry.raven.logback.SentryAppender">
<dsn>
https://e0a61232c92f42ffa34c22914d676a8e:e64f7edc60de490eb004556d2b3fce45@sentry.io/112817
</dsn>
<springProfile name="dev">
<tags>env:dev,app:${app.name},platform:aws</tags>
</springProfile>
<springProfile name="stage">
<tags>env:dev</tags>
</springProfile>
<springProfile name="test">
<tags>env:test</tags>
</springProfile>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="SENTRY"/>
</root>
</configuration>
application.properties:
security.ignored=/**
logging.level.root = DEBUG
spring.profiles.active=dev
app.name=retailServices
注意: application.properties中的spring.profiles.active属性映射到logback配置文件中的springProfile标记。
但问题是在logback.xml文件中找不到“app.name”属性的事实。如果我将此属性用作系统属性,它可以工作,但我想将它从application.properties传递给配置文件。
所以任何解决方案,反馈和想法都会受到高度赞赏。
答案 0 :(得分:10)
在logback.xml
包括:
<property resource="application.properties" />
然后您可以以标准方式引用属性,例如${app.name}
。
答案 1 :(得分:2)
我发现Spring支持下一个标记<springProperty/>
描述here。这意味着您可以轻松地从属性文件中添加变量,即使此变量值spring也可以从环境/系统变量中解析。
答案 2 :(得分:0)
您现在可以直接通过登录上下文或通过第三方编码器进行操作。
//Save the values to Localstorage
localStorage.setItem('first','firstvalue');
localStorage.setItem('second','secondvalue');
//Retrieve the values from localstorage
localStorage.getItem('first')
//"firstvalue"
localStorage.getItem('second')
//"secondvalue"
答案 3 :(得分:0)
我知道这是一个老问题,但这仍然是一个有效的问题。
这是我的解决方案,假设您有一个不同的弹簧配置文件,并基于它想要更改配置,如 log pattern, path of log file create, size of log file ...etc.
它可以像下面那样做,
比方说,我们有两个名为 dev
和 prod
的配置文件,这些配置文件如下所示,
application-dev.properties
spring.application.name=Admin Module
logback.log.pattern=%-5level [%thread] %logger{36} : %X{correlationId} : %m%n
logback.app.log.root=C:\logs\adminModule\
logback.max.file.size=50MB
logback.max.file.history=2
application-prod.properties
spring.application.name=Admin Module
logback.log.pattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %-5level [%thread] %logger{36} : ${spring.application.name} : %X{correlationId} : %m%n
logback.app.log.root=\logs\adminModule\
logback.max.file.size=50MB
logback.max.file.history=30
application.properties
# (active profile can get dynamically)
spring.profiles.active=dev
这是我的 logback.xml
文件
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- get active profile-->
<springProperty scope="context" name="profile" source="spring.profiles.active"/>
<!-- get properties from active profile-->
<property resource="application-${profile}.properties" />
<property name="LOG_PATTERN" value="${logback.log.pattern}"/>
<property name="APP_LOG_ROOT" value="${logback.app.log.root}"/>
<property name="MAX_FILE_SIZE" value="${logback.max.file.size}"/>
<property name="MAX_FILE_HISTORY" value="${logback.max.file.history}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${APP_LOG_ROOT}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${APP_LOG_ROOT}/info.%d{yyyy-MM-dd_HH}-%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${MAX_FILE_HISTORY}</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="infoLog"/>
<appender-ref ref="console"/>
</root>
</configuration>
此解决方案将减少维护多个 logback.xml
文件的开销。