从另一个线程向sentry添加http请求信息

时间:2016-10-27 20:30:59

标签: java sentry raven

我们正在使用log4j appender从我们的tomcat webapp向sentry发送错误。这适用于请求主线程中发生的错误 - 我们获取所有额外的http信息,如url,请求参数,cookie,标题等。

但是我们的一些请求产生了其他线程来使用org.springframework.core.task.TaskExecutor.execute()来做事。当我们在这些线程中记录错误时,我们在哨兵中获得的信息非常少。无论如何将上下文从父线程附加到错误?

1 个答案:

答案 0 :(得分:1)

您可能正在使用MDC工具添加此额外信息。 MDC信息存储在ThreadLocal存储中,这意味着它仅可用于存储所绑定的线程。

确保额外信息可用的一种方法是确保通过将上下文映射传递给子线程,在执行程序线程中提供生成任务的线程的MDC信息。

// This is the parent (main thread)
final Map<String, String> contextMap = MDC.getCopyOfContextMap();

executorService.execute(new Task(contextMap) {
    public final void run() {
        // This is run by the child.
        MDC.setContextMap(contextMap);

        ...
    }
});