登录ActiveMQ:当客户端应用程序连接到独立代理时

时间:2018-12-03 19:54:19

标签: java spring activemq

我将ActiveMQ 5.15.5作为独立代理运行,并且我的spring应用程序正在与其连接。 我试图在客户端应用程序日志中跟踪消息的生存期。

也就是说,在我的应用程序的onMessage(Message p_message)方法中,我有不同的日志语句,它们 在线程ID下打印:“ ActiveMQ会话任务”。 如下所示:

[INFO ] 2018-11-27 16:29:57,642 [ActiveMQ Session Task] HydrationServiceImpl - ===>  START: dehydrate 
[INFO ] 2018-11-27 16:29:57,642 [ActiveMQ Session Task] HydrationDaoImpl - ==> START: countCor 
[INFO ] 2018-11-27 16:29:57,649 [ActiveMQ Session Task] HydrationDaoImpl - ==> END: countCor 
[INFO ] 2018-11-27 16:29:57,649 [ActiveMQ Session Task] HydrationDaoImpl - ==> START: purge for id = 82559 
[INFO ] 2018-11-27 16:29:57,664 [ActiveMQ Session Task] HydrationDaoImpl - ==> END: purge 
[INFO ] 2018-11-27 16:29:57,664 [ActiveMQ Session Task] HydrationServiceImpl - ==> END: dehydrate 

因此,如果正在处理多个消息,则所有消息都将具有相同的线程ID:-[ActiveMQ会话任务]

因此,我无法对不同消息的日志进行分类。

有没有一种方法可以知道日志语句是针对哪条消息的?

1 个答案:

答案 0 :(得分:0)

大多数日志记录框架都实现了称为“映射诊断上下文”(以下称为MDC)的功能,以处理多个线程同时在单个工作上运行的情况。简而言之,MDC允许您将ID信息推送到每个线程堆栈上,然后可以从日志记录配置中进行引用。在您遇到的情况下,您可以将消息ID推送到MDC上,然后从日志记录配置中引用该消息ID,以便将其打印在所有日志语句中。

Here's a decent article