2014-09-18 73 views
7

如何使用sentry raven-java客戶端設置用戶環境?Sentry raven-java用戶環境

我試過添加user_email標記,並將user_email添加到MDC。他們都以預期的方式工作,標籤貼到標籤上,而MDC則貼上額外的數據,但都沒有設置哨兵用戶上下文。

我還使用哨兵使用JavaScript,並與烏鴉JS,這個偉大的工程:

Raven.setUserContext({ 
    email: '', 
    id: '' 
}); 

是否有相當於Java?

+0

見https://github.com/getsentry/raven-java/issues/110 - 自5.1.0開始,您可以添加一個新的UserInterface(id,username,ipAddress,email)' – Alden 2016-03-03 12:04:32

回答

0

https://github.com/getsentry/raven-java/tree/master/raven-log4j#mapped-tags

在附加目的地設定導航地圖標籤:

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"); 
} 
+0

我們如何傳遞用戶標識,用戶名和電子郵件,使其與客戶端的工作方式相同? – 2016-10-05 18:08:37

1

似乎不能直接通過的logback發送用戶信息。 你可以看看實現從烏鴉的java:

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()); 
    ...... 
} 

用戶信息被髮送:withSentryInterface(新的UserInterface(...)),但我所看到的這個工具只包含代碼:StackTraceInterface和MessageInterface。我想你可以自己添加一個。

0

如果仍然有興趣,在啓動時運行(假設 「用戶id」 和 「IP」 的MDC上設置):

Raven.getStoredInstance().addBuilderHelper(eventBuilder -> { 
    UserInterface userInterface = new UserInterface(MDC.get("userid"), null, MDC.get("ip"), null); 
    eventBuilder.withSentryInterface(userInterface); 
});