问题标签 [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.
java - 无法将值放入 MDC
我试图在检票口中记录几个onBeginRequest()
值RequestCycle()
。但是这些值没有记录在调试文件中。我将 MDC 中的值放入RequestCycleListeners()
.
以下是代码:
};
我期待在调试文件中记录“serverName”、“sessionId”。
我已listener
在扩展WebApplication
.
我正在使用 log4j.xml,DEBUG appender
它看起来如下:
我们在根标签中定义范围:
java - log4j MDC 可以用于非线程应用程序吗?
我有一个场景,其中我从 FOR 循环内部为字段 JOBNAME 的不同值调用第三方 REST URL。我希望将每个 JOBNAME 的日志记录语句记录在一个单独的日志文件中,即发送到 REST URL 的请求、所有中间业务逻辑日志记录和收到的响应都需要成为每个 JOBNAME 的不同日志文件的一部分。
这里的问题是处理不涉及线程。MDC 方法是否也适用log4j
于非线程场景。如果没有,我怎样才能做到这一点?
logging - 如何根据“类别”拆分 logback 日志
我有一个将请求路由到“实时”或“测试”系统的 servlet。
servlet 根据 URI 路径知道这一点。我想将日志写在两个单独的文件中 1 用于实时测试。
所以我知道我需要使用 mdc
所以...
在我的 logback.xml 中,我有两个附加程序。如何告诉记录器根据测试或实时的 MDC 值选择正确的附加程序?
java - log4j:冒泡错误/异常详细信息
我的团队正在使用 slf4j 进行日志记录,并正在查看类中层次结构顶部的日志记录错误/异常情况(例如:A 类-> B 类-> C 类(此处的异常)=== 登录类一个方法)。
如果我们可以从最底层到顶层冒泡一些具体的细节,以避免任何信息丢失,那将是很好的。(在许多地方,我们将一个异常转换为另一个异常,在这种情况下,我们将不知道在哪里发生了什么?)
除了使用 MDC 之外,在 log4j 中还有其他方法吗?
java - 如何使用 log4j2(xml 中的 MDC)在不同的文件中写入不同的日志?
现在我正在使用这样的结构:Appender:
记录仪:
但它不适用于 MDC 密钥。如何使用 xml 中的 MDC 密钥来配置 RollingFileAppender?
java - Log4J 转换说明符“%l”不打印整个堆栈跟踪
我正在尝试发送电子邮件以防我们的项目发生错误。为此,我们使用 Log4j 的SMTPAppender
. 我正在开发模式下运行我的项目,并尝试通过使用以下内容来获取错误的完整堆栈ConversionPattern
跟踪SMTPAppender
:
我抛出错误如下:
%m
被文本替换,To get the MDC values !!!
但是%l
(小写L
)正在打印发出带有行号的日志请求的调用者的完全限定类名(就像 %c 所做的那样,不同之处在于 %c 从不打印行号而 %l 确实)。
获取堆栈跟踪的正确方法是什么,为什么%l
不获取整个堆栈跟踪?
java - Logback MDC put() 可变对象
我正在使用 Vaadin 框架,它对拦截事件的支持很差,我不知道会话或 UI 何时被激活,所以我不能将它们的 id 放在 MDC 中。
通常我会:
但我没有这样的活动,所以我想:
这样,无论会话更改多少次,我都会在日志中获取当前会话。
这可能吗?如何用自定义实现替换 logback MDC 实现?我应该编辑 slf4j 和 logback 的来源吗?
java - log4j:MDC 配置问题
我正在尝试为每个日志添加用户名。我发现 MDC 是合适的解决方案,我遵循了该教程。
这是一个日志片段,用于测试目的;我打印单词“TEST”而不是用户名:
如您所见,它似乎只在Struts2 拦截器或操作中有效AuthenticationFilter
,但在 Struts2 拦截器或操作中无效。我是AuthenticationFilter
这样实现的:
我将此添加到文件中web.xml
:
这就是我使用的模式log4j.xml
我想我对 MDC 有一些不明白的地方。我认为将为每个请求调用 MDC,以便它可以设置映射,ThreadLocal
并且每个请求都有它自己的线程(我可能也无法ThreadLocal
正确理解。)。
我应该查找/修改什么以便在我的配置中使用 MDC?
编辑:
我添加了一个日志,这样我就可以看到地图中的数据何时被删除。在第一个动作/拦截器日志之前,它们在地图中什么都没有。我希望看到这样的东西:
- AuthenticationFilter - 测试 -
- 拦截器日志
- AuthenticationFilter 用户名已删除
java - 具有日志记录和嵌套 EJB 调用的 EJB 拦截器
我正在尝试通过拦截器为 EJB 调用应用常规日志记录。此日志记录应记录 bean 的安全主体。该方法使用 MDC 并将主体推送到 MDC 并在方法调用完成时将其删除。
但是,当在 EJB 中进行 EJB 方法调用时,这种方法会失败。请参阅下面的演示代码。有没有解决这个问题的解决方案或更好的方法?
现在我尝试将它与会话 bean 一起使用,如下所示:
和豆2:
当直接调用 Bean2 时,日志记录工作:
但是,当调用 Bean1 时,第二个日志语句不再具有用户,因为 UserKey 已被 Bean2 的拦截的 finally-Block 从 MDC 中删除:
java - 何时从 MDC 中删除
我最近发现了在记录时使用MDC的魔力。它完美地工作。
我有以下方法:
这被称为每个 jsp 中的第一个操作。这使我可以很好地跟踪日志中的会话细节。
但是 - 我怎么知道remove
这些地图条目的时间?我应该注意什么事件才能让我整理地图?
我在Tomcat下托管。如果它重用线程,那么我不会泄漏内存,因为它们本质上是线程本地的,所以每个线程put
都会覆盖put
上次使用线程时的旧线程。如果它没有 - 或者我托管在其他没有的东西下 - 我基本上可能会永远增长地图 - 或者至少在主机重新启动之前。
我认为我的问题的本质是 - 我是否可以检测到表明特定会话或线程已完成并即将被释放的事件。