【问题标题】:Can log4j MDC be used for non-threaded application?log4j MDC 可以用于非线程应用程序吗?
【发布时间】:2013-06-12 03:25:29
【问题描述】:

我有一个场景,其中我从 FOR 循环内部为字段 JOBNAME 的不同值调用第三方 REST URL。我希望将每个 JOBNAME 的日志记录语句记录在一个单独的日志文件中,即发送到 REST URL 的请求、所有中间业务逻辑日志记录和收到的响应都需要成为每个 JOBNAME 的不同日志文件的一部分。

这里的问题是处理不涉及线程。 log4j 的 MDC 方法是否也适用于非线程场景。如果没有,我该如何实现?

【问题讨论】:

    标签: java log4j mdc


    【解决方案1】:

    拥有一个线程,您仍然可以将变量放入 MDC 上下文中,让调用传播并记录它们所做的任何事情。只需确保在调用有趣的员工之前执行 MDC.put(..) 并在完成后将其删除,这样它就不会逗留。例如,您可以在 FOR 循环中执行 MDC.put(..) 并且每次迭代都将使用不同的上下文,即使它是同一个线程。不确定其他地方,但在 Java 中它可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2011-09-28
      • 1970-01-01
      相关资源
      最近更新 更多