【发布时间】:2010-06-04 18:30:42
【问题描述】:
我们有一个使用线程的系统,因此它可以同时并行处理不同的功能位。我们希望找到一种将特定“事务”的所有日志条目绑定在一起的方法。通常,可以使用 'threadName' 将这些集合在一起,但显然这在多线程情况下会失败。
没有在每个方法调用中传递一个“事务密钥”,我看不到将它们联系在一起的方法。并且将密钥传递给每个方法都是丑陋的。
此外,我们有点依赖于 Java 日志记录,因为我们的系统是建立在它的修改版本之上的。因此,我会对其他平台感兴趣,以了解我们可能会尝试的示例,但切换平台的可能性极小。
有人有什么建议吗?
谢谢,
彼得
编辑:不幸的是,我无法控制线程的创建,因为这一切都由工作流包处理。否则,为每个线程缓存一次 ID 的想法(可能在 ThreadLocal 上?)然后在创建新线程时将其设置在新线程上是一个好主意。反正我也可以试试。
【问题讨论】:
-
您能否在调用并发工作位(try/finally 模式)之前和之后设置/重置线程 ID,然后使用它来驱动日志记录?
标签: java multithreading logging