2014-09-18 13 views
7

Làm cách nào để tôi có thể đặt bối cảnh người dùng với ứng dụng khách sentry raven-java?Ngữ cảnh người dùng raven-java Sentry

Tôi đã thử thêm một thẻ user_email và thêm user_email vào MDC. Cả hai đều làm việc như mong đợi, với thẻ sẽ chuyển sang thẻ và MDC sẽ bổ sung dữ liệu nhưng không đặt bối cảnh người dùng được sentry.

tôi cũng sử dụng sentry với javascript, và với con quạ-js, công trình vĩ đại này:

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

Có một java tương đương?

+0

Xem https://github.com/getsentry/raven-java/issues/110 - kể từ 5.1.0 bạn có thể thêm một 'UserInterface mới (id, tên người dùng, ipAddress, email)' – Alden

Trả lời

0

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

thẻ đồ bộ trong appender:

log4j.appender.SentryAppender.mappedTags=User,OS 

và thiết lập MDC trong thời gian chạy:

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

Làm cách nào để chuyển id người dùng, tên người dùng, email để nó hoạt động theo cách tương tự như ứng dụng khách? –

1

Có vẻ không thể gửi thông tin người dùng trực tiếp bởi logback. Bạn có thể nhìn vào thực hiện từ raven-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()); 
    ...... 
} 

Chi tiết thành viên được gửi bởi: withSentryInterface (diện người dùng mới (...)), tuy nhiên những gì tôi thấy điều này thực hiện chỉ chứa mã cho: StackTraceInterface và MessageInterface. Tôi nghĩ bạn có thể thêm một cái bằng chính bản thân mình.

0

Nếu vẫn quan tâm, chạy khi khởi động (giả sử "userid" và "ip" được thiết lập trên MDC):

Raven.getStoredInstance().addBuilderHelper(eventBuilder -> { 
    UserInterface userInterface = new UserInterface(MDC.get("userid"), null, MDC.get("ip"), null); 
    eventBuilder.withSentryInterface(userInterface); 
}); 
Các vấn đề liên quan