2014-09-18 12 views
7

Wie kann ich den Benutzerkontext mit dem Posten raben Java-Client?Sentry raben java Benutzerkontext

Ich habe versucht, das Hinzufügen einer user_email-Tag, und das Hinzufügen von user_email zum MDC. Beide funktionieren erwartungsgemäß, wobei das Tag zu Tags führt und MDC zu zusätzlichen Daten wechselt, aber keiner legt den Sentry-Benutzerkontext fest.

Ich benutze Wache mit Javascript auch, und mit raben js, funktioniert dies sehr gut:

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

Gibt es ein Java-Äquivalent?

+0

Siehe https://github.com/getsentry/raven-java/issues/110 - wie von 5.1.0 können Sie eine 'neue Userinterface (id, Benutzername, ipAddress, E-Mail)' – Alden

Antwort

0

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

Set Karte Tags im appender:

log4j.appender.SentryAppender.mappedTags=User,OS 

und stellen Sie die MDC in Laufzeit:

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

hinzufügen wie geben wir Benutzer-ID, Benutzername, E-Mail, so dass es die gleiche Art und Weise wie der Client funktioniert? –

1

Scheint nicht Benutzerinformationen direkt von logback senden können. Sie bei der Umsetzung von raven-java aussehen:

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

Benutzerinformationen durch senden wird: withSentryInterface (neue Userinterface (...)), aber was ich dies implementieren sehen enthält nur Code für: StackTraceInterface und Nachrichtenschnittstelle. Ich denke, du kannst eins selbst hinzufügen.

0

Wenn immer noch daran interessiert, führen diese beim Start (unter der Annahme, "Benutzer-ID" und "IP" auf dem MDC eingestellt):

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