问题标签 [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 投票
2 回答
22931 浏览

java - 无法将值放入 M​​DC

我试图在检票口中记录几个onBeginRequest()RequestCycle()。但是这些值没有记录在调试文件中。我将 MDC 中的值放入RequestCycleListeners().

以下是代码:

};

我期待在调试文件中记录“serverName”、“sessionId”。

我已listener在扩展WebApplication.

我正在使用 log4j.xml,DEBUG appender它看起来如下:

我们在根标签中定义范围:

0 投票
1 回答
220 浏览

java - log4j MDC 可以用于非线程应用程序吗?

我有一个场景,其中我从 FOR 循环内部为字段 JOBNAME 的不同值调用第三方 REST URL。我希望将每个 JOBNAME 的日志记录语句记录在一个单独的日志文件中,即发送到 REST URL 的请求、所有中间业务逻辑日志记录和收到的响应都需要成为每个 JOBNAME 的不同日志文件的一部分。

这里的问题是处理不涉及线程。MDC 方法是否也适用log4j于非线程场景。如果没有,我怎样才能做到这一点?

0 投票
1 回答
883 浏览

logging - 如何根据“类别”拆分 logback 日志

我有一个将请求路由到“实时”或“测试”系统的 servlet。

servlet 根据 URI 路径知道这一点。我想将日志写在两个单独的文件中 1 用于实时测试。

所以我知道我需要使用 mdc

所以...

在我的 logback.xml 中,我有两个附加程序。如何告诉记录器根据测试或实时的 MDC 值选择正确的附加程序?

0 投票
0 回答
136 浏览

java - log4j:冒泡错误/异常详细信息

我的团队正在使用 slf4j 进行日志记录,并正在查看类中层次结构顶部的日志记录错误/异常情况(例如:A 类-> B 类-> C 类(此处的异常)=== 登录类一个方法)。

如果我们可以从最底层到顶层冒泡一些具体的细节,以避免任何信息丢失,那将是很好的。(在许多地方,我们将一个异常转换为另一个异常,在这种情况下,我们将不知道在哪里发生了什么?)

除了使用 MDC 之外,在 log4j 中还有其他方法吗?

0 投票
1 回答
8484 浏览

java - 如何使用 log4j2(xml 中的 MDC)在不同的文件中写入不同的日志?

现在我正在使用这样的结构:Appender:

记录仪:

但它不适用于 MDC 密钥。如何使用 xml 中的 MDC 密钥来配置 RollingFileAppender?

0 投票
1 回答
564 浏览

java - Log4J 转换说明符“%l”不打印整个堆栈跟踪

我正在尝试发送电子邮件以防我们的项目发生错误。为此,我们使用 Log4j 的SMTPAppender. 我正在开发模式下运行我的项目,并尝试通过使用以下内容来获取错误的完整堆栈ConversionPattern跟踪SMTPAppender

我抛出错误如下:

%m被文本替换,To get the MDC values !!! 但是%l小写L)正在打印发出带有行号的日志请求的调用者的完全限定类名(就像 %c 所做的那样,不同之处在于 %c 从不打印行号而 %l 确实)。

获取堆栈跟踪的正确方法是什么,为什么%l不获取整个堆栈跟踪?

0 投票
1 回答
1374 浏览

java - Logback MDC put() 可变对象

我正在使用 Vaadin 框架,它对拦截事件的支持很差,我不知道会话或 UI 何时被激活,所以我不能将它们的 id 放在 MDC 中。

通常我会:

但我没有这样的活动,所以我想:

这样,无论会话更改多少次,我都会在日志中获取当前会话。

这可能吗?如何用自定义实现替换 logback MDC 实现?我应该编辑 slf4j 和 logback 的来源吗?

0 投票
0 回答
1054 浏览

java - log4j:MDC 配置问题

我正在尝试为每个日志添加用户名。我发现 MDC 是合适的解决方案,我遵循了该教程

这是一个日志片段,用于测试目的;我打印单词“TEST”而不是用户名:

如您所见,它似乎只在Struts2 拦截器或操作中有效AuthenticationFilter,但在 Struts2 拦截器或操作中无效。我是AuthenticationFilter这样实现的:

我将此添加到文件中web.xml

这就是我使用的模式log4j.xml

我想我对 MDC 有一些不明白的地方。我认为将为每个请求调用 MDC,以便它可以设置映射,ThreadLocal并且每个请求都有它自己的线程(我可能也无法ThreadLocal正确理解。)。

我应该查找/修改什么以便在我的配置中使用 MDC?

编辑:

我添加了一个日志,这样我就可以看到地图中的数据何时被删除。在第一个动作/拦截器日志之前,它们在地图中什么都没有。我希望看到这样的东西:

  • AuthenticationFilter - 测试 -
  • 拦截器日志
  • AuthenticationFilter 用户名已删除
0 投票
1 回答
2663 浏览

java - 具有日志记录和嵌套 EJB 调用的 EJB 拦截器

我正在尝试通过拦截器为 EJB 调用应用常规日志记录。此日志记录应记录 bean 的安全主体。该方法使用 MDC 并将主体推送到 MDC 并在方法调用完成时将其删除。

但是,当在 EJB 中进行 EJB 方法调用时,这种方法会失败。请参阅下面的演示代码。有没有解决这个问题的解决方案或更好的方法?

现在我尝试将它与会话 bean 一起使用,如下所示:

和豆2:

当直接调用 Bean2 时,日志记录工作:

但是,当调用 Bean1 时,第二个日志语句不再具有用户,因为 UserKey 已被 Bean2 的拦截的 finally-Block 从 MDC 中删除:

0 投票
1 回答
4890 浏览

java - 何时从 MDC 中删除

我最近发现了在记录时使用MDC的魔力。它完美地工作。

我有以下方法:

这被称为每个 jsp 中的第一个操作。这使我可以很好地跟踪日志中的会话细节。

但是 - 我怎么知道remove这些地图条目的时间?我应该注意什么事件才能让我整理地图?

我在Tomcat下托管。如果它重用线程,那么我不会泄漏内存,因为它们本质上是线程本地的,所以每个线程put都会覆盖put上次使用线程时的旧线程。如果它没有 - 或者我托管在其他没有的东西下 - 我基本上可能会永远增长地图 - 或者至少在主机重新启动之前。

我认为我的问题的本质是 - 我是否可以检测到表明特定会话或线程已完成并即将被释放的事件。