【发布时间】:2020-04-19 22:51:06
【问题描述】:
我的应用程序正在使用 slf4j,当然,我有一个 logback.xml 文件。我尝试向这个文件添加一个哨兵附加程序。这是我的 logback.xml 文件。
<appender name="CONSOLE-INFO" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<target>System.out</target>
<encoder>
<pattern>%d %p %c{1.} %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE-ERROR" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<target>System.error</target>
<encoder>
<pattern>%d %p %c{1.} %m%n%ex{100}</pattern>
</encoder>
</appender>
<appender name="SENTRY" class="io.sentry.logback.SentryAppender">
<dsn>
https://...Sentry dsn
</dsn>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%d %p %c{1.} %m%n%ex{100}</pattern>
</encoder>
</appender>
<logger name="kafkaOrderLogger" level="info" additivity="false">
<appender-ref ref="CONSOLE-INFO"/>
</logger>
<logger name="kafkaOrderErrorLogger" level="error" additivity="false">
<appender-ref ref="CONSOLE-ERROR"/>
</logger>
<logger>
<appender-ref ref="SENTRY"/>
</logger>
<root level="info">
<appender-ref ref="CONSOLE-INFO"/>
<appender-ref ref="CONSOLE-ERROR"/>
<appender-ref ref="SENTRY"/>
</root>
我的应用在部署之前已被 docker 化,并且作为我们 ci/cd 的一部分,它部署在三个不同的环境中,即暂存环境和生产环境。 问题是我只能通过应用程序根目录的属性文件来提供变量。这个属性文件将根据部署环境填充值这意味着我不能在资源文件夹中有一个自动填充的 sentry.properties。我想要的是设置 Sentry 环境,最好不要像 slf4j appenders 一样触及代码。
【问题讨论】:
-
你找到解决办法了吗?
-
@SudhanshuGupta 很遗憾没有
-
但是你能在应用启动时提供ENV变量吗?因为哨兵确实在那里寻找它的配置。 docs.sentry.io/platforms/java/guides/logback/configuration