问题标签 [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.

0 投票
1 回答
572 浏览

spring-batch - 如何让 MDC 日志记录为 Spring Batch 工作

在 Spring Batch 中,通过日志记录跟踪执行线程会很棒。但是,MDC 似乎不起作用。

MDC.put("process", "batchJob"); logger.info("{}; status={}", getJobName(), batchStatus.name());

有人让 MDC 在 Spring Batch 中工作吗?

0 投票
1 回答
1506 浏览

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:

0 投票
3 回答
4912 浏览

java - 如何将 MDC 与 ForkJoinPool 一起使用?

跟进如何将 MDC 与线程池一起使用?如何将 MDC 与 一起使用ForkJoinPool?具体来说,我如何在执行任务之前包装一个ForkJoinTaskMDC 值?

0 投票
1 回答
2038 浏览

java - 从 MDC 清除 requestId 的位置

我正在尝试将一个添加到我的网络应用程序的日志中,如此requestId所示。

问题在于它在上述过滤器中设置和删除 requestIdMDC我还使用WriterInterceptor. 问题是,由于拦截器在过滤器之后运行,所以当我WriterInterceptor执行时,没有 requestId 在MDC.

MDC.clear()我的问题是,是否可以在结束时打电话WriterInterceptor(感觉有点骇人听闻),还是有更好的方法来实现这一点?

0 投票
0 回答
167 浏览

logback - 如果缺少 MDC 密钥,则使用记录器名称

我正在将 logback 与第三方包一起使用,该第三方包在其代码运行时在 MDC 中设置一个标识符。其余时间,未设置此标识符。所以如果我使用 a PatternLayoutof [%X{id}] %m%n,那么我会看到类似的消息

与包相关的消息。但是,我的其余日志语句看起来像

存在时是有用的%X{id}信息,但我希望在不存在时使用记录器名称。我试过了

但两者都没有使用记录器名称作为默认值。

如果未设置,我可以编写一个自定义布局,将 id 设置为记录器名称,转发到布局,然后清除字段。有没有更简单的方法来做到这一点?

0 投票
1 回答
707 浏览

java - aroundReceive 方法中的 Actor MDC 上下文

我有一个 Java Akka 应用程序,我想根据消息中的信息为每个消息处理设置一个单独的 MDC 上下文,例如,我对所有消息都有以下基本接口:

我还有以下所有演员的基本演员:

以及实际的actor实现:

我想确保里面的所有日志条目SomeActor#receive()都将在BaseActor. 为了使这项工作SomeActor#receice() 需要在与BaseActor#aroundReceive()方法相同的线程中执行。

我没有找到有关行为的任何信息aroundReceive- 是否总是在与实际receive方法相同的线程中执行?根据我的测试,它总是在同一个线程中执行。

0 投票
1 回答
2045 浏览

java - 使用 ThreadPools 或 Spring Async 的 Logback MDC

我试图确定MDC使用 Cacheable ThreadPools 或 Spring 的 Async 注释时的线程安全性如何。

我有一个调用多个CompletableFuture<>并使用线程池执行它们的方法

来自 Logback 的 MDCAdapter 的相关部分

由于 ThreadPools 重用了已经产生的线程,并且 MDC 使用 ThreadLocal 上下文映射。我们是否有可能丢失或损坏存储在 MDC 中的值?如果是这样,可能发生这种情况的潜在情况是什么?

0 投票
3 回答
2854 浏览

log4j - 如何针对 log4j 2 中的 MDC 键设置默认值?

与在 log4j 中一样,我们可以选择针对 MDC 键设置默认值,如下所示 - mdc{key:-defaultVal}

我们在 log4j 2 中有类似的东西吗?

0 投票
1 回答
1154 浏览

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 属性?

谢谢

0 投票
2 回答
2160 浏览

log4j2 - 如何通过gelf将MDC转移到graylog?

我们有一个日志记录流程,我们的 java 应用程序填充一个 MDC,该 MDC 通过 log4j2 传输到 syslog 到中央 rsyslog 安装。在这里,我们广泛使用 MDC。因此,我们的设置是:

我正在尝试将其转换为使用 graylog,似乎 GELF 是推荐的传输协议。我找到了多个库来执行此操作,并从GelfLayoutlog4j2 的内置开始。但这不支持LoggerFields

那么将这些字段放入 Graylog 的推荐方法是什么?如果我做

我在 Graylog 中得到了一堆字段,但值没有扩展。