jms - 设置本地和远程队列之间的关联 id,使用相同的方式获取 splunk 中的日志
问题描述
我有两个队列。其中一个是本地的,另一个是远程的。
通常我使用rfhutil
工具来提供所有细节。
通过设置correlationid
,我确实使用相同的方式在 splunk 中获取了我的日志。
什么应该是合适的代码。
解决方案
发送消息时:
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 上拥有聚合函数。所以你可以做唯一或计数或任何查询。
推荐阅读
- python - 将列从一个数据帧附加到另一个数据帧,循环中有多个匹配项
- c++ - 使用 Visual Studio 调试 C++ 默认生成的 == 运算符
- arrays - 从react js中的数组数据获取Img标签时如何设置图像路径?
- sockets - 如何使用通用 netlink 和 libnl 从内核向用户空间发送消息?
- r - 将坐标转换为国会选区
- ssh - Paramiko,打开一个 SOCKS 代理,但从机器 B 到 C
- android - 如何测量 Jetpack Compose 中的渲染时间?
- javascript - 如何在不使用任何插件的情况下为动态创建的 HTML 表格添加正确的分页
- npm - Vuex ORM:任何作为 vuex orm 商店的经验或示例 npm 包?
- javascript - 状态未更新组件 (React)