Sentry raven java用户上下文

Sentry raven java用户上下文,java,sentry,raven,Java,Sentry,Raven,如何使用sentry raven java客户端设置用户上下文 我尝试添加一个user\u email标记,并将user\u email添加到MDC。它们都按预期工作,标记转到标记,MDC转到附加数据,但都没有设置sentry用户上下文 我还将sentry与javascript和raven js结合使用,效果非常好: Raven.setUserContext({ email: '', id: '' }); 是否有java等价物?来自: 在appender中设置地图标记: log

如何使用sentry raven java客户端设置用户上下文

我尝试添加一个
user\u email
标记,并将
user\u email
添加到MDC。它们都按预期工作,标记转到标记,MDC转到附加数据,但都没有设置sentry用户上下文

我还将sentry与javascript和raven js结合使用,效果非常好:

Raven.setUserContext({
    email: '',
    id: ''
});
是否有java等价物?

来自:

在appender中设置地图标记:

log4j.appender.SentryAppender.mappedTags=User,OS
并在运行时设置MDC:

void logWithExtras() {
    // MDC extras
    MDC.put("User", "test user");
    MDC.put("OS", "Linux");

    // This adds a message with extras and MDC keys declared in mappedTags as tags to Sentry
    logger.info("This is a test");
}

似乎无法通过logback直接发送用户信息。 您可以查看raven java的实现:


用户信息是通过:WithEntryInterface(新用户界面(…)发送的,但是我看到的这个实现只包含:StackTraceInterface和MessageInterface的代码。我想您可以自己添加一个。

如果仍然感兴趣,请在启动时运行此操作(假设MDC上设置了“userid”和“ip”):


请参阅-从5.1.0开始,您可以添加
新用户界面(id、用户名、IP地址、电子邮件)
我们如何传递用户id、用户名、电子邮件,使其与客户端的工作方式相同?
protected Event buildEvent(ILoggingEvent iLoggingEvent) {
    EventBuilder eventBuilder = new EventBuilder()
            .withTimestamp(new Date(iLoggingEvent.getTimeStamp()))
            .withMessage(iLoggingEvent.getFormattedMessage())
            .withLogger(iLoggingEvent.getLoggerName())
            .withLevel(formatLevel(iLoggingEvent.getLevel()))
            .withExtra(THREAD_NAME, iLoggingEvent.getThreadName());
    ......
}
Raven.getStoredInstance().addBuilderHelper(eventBuilder -> {
  UserInterface userInterface = new UserInterface(MDC.get("userid"), null, MDC.get("ip"), null);
  eventBuilder.withSentryInterface(userInterface);
});