问题标签 [mdc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-batch - 如何让 MDC 日志记录为 Spring Batch 工作
在 Spring Batch 中,通过日志记录跟踪执行线程会很棒。但是,MDC 似乎不起作用。
MDC.put("process", "batchJob");
logger.info("{}; status={}", getJobName(), batchStatus.name());
有人让 MDC 在 Spring Batch 中工作吗?
dynamic - Set MDC value before any logging and retain until logging is completed
I have Logback configuration with SiftingAppender where dynamic MDC value is set on application load in main() method which is generated dynamically. How can I ensure that MDC value generated from Java code is loaded before all logging is started in any class? Because when I start log in SingletonUUID class it logs to directory "default" (default value of SiftAppender discriminator).
Here is my logback.xml:
Main Class:
SingletonUUID class:
java - 如何将 MDC 与 ForkJoinPool 一起使用?
跟进如何将 MDC 与线程池一起使用?如何将 MDC 与 一起使用ForkJoinPool
?具体来说,我如何在执行任务之前包装一个ForkJoinTask
MDC 值?
java - 从 MDC 清除 requestId 的位置
我正在尝试将一个添加到我的网络应用程序的日志中,如此处requestId
所示。
问题在于它在上述过滤器中设置和删除 requestId
。MDC
我还使用WriterInterceptor
. 问题是,由于拦截器在过滤器之后运行,所以当我WriterInterceptor
执行时,没有 requestId 在MDC
.
MDC.clear()
我的问题是,是否可以在结束时打电话WriterInterceptor
(感觉有点骇人听闻),还是有更好的方法来实现这一点?
logback - 如果缺少 MDC 密钥,则使用记录器名称
我正在将 logback 与第三方包一起使用,该第三方包在其代码运行时在 MDC 中设置一个标识符。其余时间,未设置此标识符。所以如果我使用 a PatternLayout
of [%X{id}] %m%n
,那么我会看到类似的消息
与包相关的消息。但是,我的其余日志语句看起来像
存在时是有用的%X{id}
信息,但我希望在不存在时使用记录器名称。我试过了
和
但两者都没有使用记录器名称作为默认值。
如果未设置,我可以编写一个自定义布局,将 id 设置为记录器名称,转发到布局,然后清除字段。有没有更简单的方法来做到这一点?
java - aroundReceive 方法中的 Actor MDC 上下文
我有一个 Java Akka 应用程序,我想根据消息中的信息为每个消息处理设置一个单独的 MDC 上下文,例如,我对所有消息都有以下基本接口:
我还有以下所有演员的基本演员:
以及实际的actor实现:
我想确保里面的所有日志条目SomeActor#receive()
都将在BaseActor
. 为了使这项工作SomeActor#receice()
需要在与BaseActor#aroundReceive()
方法相同的线程中执行。
我没有找到有关行为的任何信息aroundReceive
- 是否总是在与实际receive
方法相同的线程中执行?根据我的测试,它总是在同一个线程中执行。
java - 使用 ThreadPools 或 Spring Async 的 Logback MDC
我试图确定MDC
使用 Cacheable ThreadPools 或 Spring 的 Async 注释时的线程安全性如何。
我有一个调用多个CompletableFuture<>
并使用线程池执行它们的方法
来自 Logback 的 MDCAdapter 的相关部分
由于 ThreadPools 重用了已经产生的线程,并且 MDC 使用 ThreadLocal 上下文映射。我们是否有可能丢失或损坏存储在 MDC 中的值?如果是这样,可能发生这种情况的潜在情况是什么?
log4j - 如何针对 log4j 2 中的 MDC 键设置默认值?
与在 log4j 中一样,我们可以选择针对 MDC 键设置默认值,如下所示 - mdc{key:-defaultVal}
我们在 log4j 2 中有类似的东西吗?
spring-boot - spring boot MDC 继承行为是否发生了变化?
直到最近我还在使用 spring-boot 1.3.5.RELEASE 并且以下工作。
注意MDC put。然后使用 logback 记录器将 service_name 记录在整个应用程序的每个日志行中。即使在子线程(例如 MVC 控制器)中也是如此。
我们现在使用的是 spring 版本 1.4.1.RELEASE 并且 service_name 的 MDC 日志现在只在主线程中工作,而不是 MVC 控制器线程。
“myapp”仍然记录在主线程中:
但是在控制器日志行中“myapp”现在丢失了。
在更改之前它看起来像:
我可以在调试器中看到 MDC 上下文在控制器方法开始时为空。
有谁知道什么变化影响了这种行为?也许对 Spring MVC 线程创建进行了更改?还是 logback 更改?有没有办法在 spring-boot 中设置和保持应用程序范围的 MDC 属性?
谢谢
log4j2 - 如何通过gelf将MDC转移到graylog?
我们有一个日志记录流程,我们的 java 应用程序填充一个 MDC,该 MDC 通过 log4j2 传输到 syslog 到中央 rsyslog 安装。在这里,我们广泛使用 MDC。因此,我们的设置是:
我正在尝试将其转换为使用 graylog,似乎 GELF 是推荐的传输协议。我找到了多个库来执行此操作,并从GelfLayout
log4j2 的内置开始。但这不支持LoggerFields
。
那么将这些字段放入 Graylog 的推荐方法是什么?如果我做
我在 Graylog 中得到了一堆字段,但值没有扩展。