Scala 向Sentry Logback添加一个钩子以清除数据
我正在使用LogbackSDK for Java向Sentry发送事件,如中所述 片段:Scala 向Sentry Logback添加一个钩子以清除数据,scala,logback,sentry,Scala,Logback,Sentry,我正在使用LogbackSDK for Java向Sentry发送事件,如中所述 片段: <conversionRule conversionWord="CUSTOM_CONVERSION_RULE" converterClass="clazz..." /> ... <property scope="context" name="myEnc" value="
<conversionRule conversionWord="CUSTOM_CONVERSION_RULE"
converterClass="clazz..." />
...
<property scope="context" name="myEnc" value="%d{ISO8601,UTC} | %-5level | %-50thread | %-55logger{55} | %CUSTOM_CONVERSION_RULE" />
...
<appender name="SENTRY" class="io.sentry.logback.SentryAppender">
<dsn>...</dsn>
<encoder>${myEnc}</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
....
从我所看到的,发送前的
钩子正是我需要在需要时清理数据的地方,因为我不想把一些信息发送给Sentry
现在,第二个问题是,我不知道如何在这里引用一个方法。在Java配置中,有一个接受事件并可以更改它的双函数。但是我想把这个钩子应用到我所有的日志事件中,这就是为什么只在LogbackSDK中配置它的原因。
例如,在SpringBoot中,有一个用于Sentry的启动器,当然还有一个bean,您可以在自动配置中注入该bean。
但是,我使用的Scala没有弹簧靴
此外,该项目已经在prod中,所以我不能改变很多东西,我正在寻找最小的一个,它将允许我添加一个钩子到Logback的sdkforsentry
下面是一个示例,它看起来(我不确定它是如何工作的)可以从XML填充选项
,然后传递到init
,这将考虑所有选项,包括我的before send钩子
我不知道是否接受有两个问题,标题中只提到一个问题,但我没有找到更好的方式来问/解释这个问题,因为一件事导致另一件事
总结问题:
提前谢谢 您可以在
logback.xml
中独立于appender配置来配置Sentry。例如:
public class Main {
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
static {
Sentry.init(options -> {
options.setDsn("PUT YOUR DSN HERE");
options.setBeforeSend((sentryEvent, o) -> {
sentryEvent.setTag("custom", "tag");
return sentryEvent;
});
});
}
public static void main(String[] args) {
LOGGER.error("oops");
}
}
最好的方法是通过appender禁用auto init,并通过代码调用Sentry.init。在那里,您可以通过编程编写回调函数。
public class Main {
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
static {
Sentry.init(options -> {
options.setDsn("PUT YOUR DSN HERE");
options.setBeforeSend((sentryEvent, o) -> {
sentryEvent.setTag("custom", "tag");
return sentryEvent;
});
});
}
public static void main(String[] args) {
LOGGER.error("oops");
}
}
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="sentry" class="io.sentry.logback.SentryAppender" />
<root level="debug">
<appender-ref ref="console"/>
<appender-ref ref="sentry"/>
</root>
</configuration>