java - 从另一个线程向 Sentry 添加http请求信息

标签 java sentry raven

我们使用 log4j 附加程序从 Tomcat Web 应用程序向 Sentry 发送错误。这对于请求主线程中发生的错误非常有效——我们可以获得所有额外的 http 信息,如 url、请求参数、cookie、 header 等。

但是我们的一些请求会产生其他线程来使用 org.springframework.core.task.TaskExecutor.execute() 来执行任务。当我们在这些线程中记录错误时,我们在 Sentry 中获得的信息非常少。无论如何,是否可以将父线程的上下文附加到错误中?

最佳答案

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

确保额外信息可用的一种方法是,通过将上下文映射传递给子线程,确保生成任务的线程的 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);

        ...
    }
});

关于java - 从另一个线程向 Sentry 添加http请求信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40293703/

相关文章:

docker - 如何在 Sentry 中配置 SMTP 设置?

python - 为 raven-python( Sentry 客户端)添加一个钩子(Hook)到 Gunicorn

java - 日历代码在 Activity 中有效但在 fragment 中无效

java - 从android中的加速度计读取后一行代码正在循环

java - spring boot - 如何在 HTTP Controller 处理程序中避免 "Failed to instantiate [java.util.List]: Specified class is an interface"?

python-3.x - 使用 Python 3 的 Sentry

java - 如何在 opendaylight Controller 中编写 java 模块

python - 获取 Sentry 的事件页面 url

programming-languages - Sentry 中的平台选项有什么作用?

sentry - raven - sentry + django = 没有配置服务器,也没有安装 sentry。无法发送信息