我有两个队列。其中一个是本地的,另一个是远程的。
通常,我使用rfhutil
工具提供所有详细信息。
通过设置correlationid
,我确实使用相同的日志来获取日志。
什么是合适的代码。
答案 0 :(得分:0)
发送消息时:
Session session = ...
String correlationId = ...
TextMessage msg = session.createTextMessage(payload);
msg.setJMSCorrelationID(correlationID);
log.info("Message sent with correlationID: '{}'", correlationId);
接收消息时:
MessageConsumer consumer = ...
Message msg = consumer.receiveNoWait();
String correlationId = msg.getJMSCorrelationID();
log.info("Received message with correlationID: '{}'", correlationId);
通过使用SLF4J的映射诊断上下文(也称为MDC)功能,您可以在同一线程的以下每个日志行上添加相关ID:
// assume folllowing logback pattern or equivalent for other loggers:
// <pattern>cid: %X{cid} %msg %n</pattern>
String correlationId = "AssumeProperCorrelationIdHere"
org.slf4j.MDC.put("cid", correlationId);
log.info("MDC is a mighty feature");
// expected log output:
// cid: AssumeProperCorrelationIdHere MDC is a mighty feature
现在,当在Splunk中搜索“ AssumeProperCorrelationIdHere”时,您将获取所有包含此值的日志事件。另外,通过在日志中使用键值格式,可以很容易地使用正则表达式(如“ cid:\ w +”)来构造splunk字段。这将使您可以在关联ID上具有聚合功能。因此,您可以进行唯一查询,计数查询或其他查询。