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

slf4j - 有没有办法设置 MDC 永久或默认键/值对

我想在 MDC 中放置一个在所有 MDC 实例中都是静态的键/值对。

有没有办法设置这个?

如果有帮助,我正在使用 java 和 spring

谢谢你。

0 投票
1 回答
874 浏览

java - 自定义 log4j 附加程序

我编写了我的个人 log4j Daily Rolling Appender,以便为我的应用程序自定义日志记录。

这是Appender的源代码

这是 log4j.properties

FILE 设置为 DailyRollingFileAppender

其中 MYAPPENDER 是我的自定义附加程序。

现在的问题是,有时我注意到输出日志文件被截断,尽管 FILE.Append 是真的

提前致谢

问候

0 投票
1 回答
1559 浏览

java - 使用 slf4j(和 log4j)传递日志事件特定数据

有没有办法通过 slf4j 传递仅适用于当前日志事件的更多信息?可以通过 MDC 存储和访问基于请求的信息,例如用户、IP 地址或应用程序名称。稍后我可以在布局或转换器中访问该信息,而不必解析日志消息。如果我使用基于 JSON 的格式,我还有另一个字段,"appName":myApp如果我使用 log4j 以纯文本形式登录,我可以通过%{appName}符号访问它。有没有办法通过仅适用于一个日志事件的信息来实现这一点?例如,我想传递一个异常 id(即使是我不拥有的异常)。最好但仍然丑陋的解决方案是将 id 传递给 MDC,记录异常并在之后将其删除。有谁知道更好的解决方案?

0 投票
1 回答
1938 浏览

visual-c++ - 设置 Cedit 文本

我有以下代码尝试在 Cedit 文本框中设置文本:

这给了我一个调试断言错误。我假设问题出在以下几行:

将它们注释掉时,一切正常。

0 投票
1 回答
1117 浏览

java - 如何将会话信息传递给 Axis2 处理程序

我有一个中间件 java spring 应用程序,它在顶层发布服务,并在底层有 Axis 2 客户端用于服务消费。当在服务层发出请求时,使用 MDC (log4j 1.x) 将会话 ID 添加到线程上下文中。

我们来自服务层(顶部)和集成层(底部)的所有日志记录都使用 MDC 输出会话 id,因此可以关联这些日志。

困难是我还需要为axis2客户端输出请求和响应xml。我创建了以下处理程序来完成此操作:

还在 InFlow、InFaultFlow、OutFlow、OutFaultFlow 中将此添加到 axis2.xml

<handler name="XMLLoggerDispatcher" class="com.xxx.xxx.logging.AxisXmlLoggerHandler"/>

这对于记录 xml 非常有效,但是会话 ID 不在 MDC 中,我假设是因为 MDC 被复制到子线程并且处理程序是从不同的池中执行的。

所以我面临的问题是,如何让 MDC 进入处理程序线程?

虽然我真正需要的是会话 ID,但也许还有其他选择。例如,我们在传出标头上添加会话 ID,所以我想如果我可以从处理程序访问标头,并找到一种通过其他机制(自定义生命周期)关联请求和响应消息的方法,那也可以解决我的问题。但是,我无法在处理程序的肥皂信封中找到任何标题。我从处理程序类中尝试了以下两种方式:

在这两种情况下,日志都没有显示标题。我还尝试在没有影响的情况下转移到流程中的不同阶段。任何帮助将不胜感激

0 投票
1 回答
334 浏览

wcf - 将 log4net 和 IHttpModule 与 WCF 服务一起使用

我有一个包含许多网页和一些 WCF 服务的网站。

我有一个日志记录 IHttpModule 订阅 PreRequestHandlerExecute 并设置许多 log4net MDC 变量,例如:

这个模块适用于我的 aspx 页面。

为了使模块能够与 WCF 一起使用,我在 web.config 中设置了 aspNetCompatibilityEnabled="true",并在服务上设置了 RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed。

但是当调用服务方法时,MDC 不再包含任何设置值。我已经确认它们是通过在 PreRequestHandlerExecute 中放置一个日志记录方法来设置的。

我认为 MDC 正在丢失这些值,因为在日志中我可以看到 PreRequestHandlerExecute 处理程序方法和服务方法调用在不同的线程上。

在 wcf PerSession 服务中使用 ThreadContext.Properties发布log4net建议使用 log4net.GlobalContext 但我认为如果两个用户同时访问应用程序,因为 GlobalContext 由所有线程共享,该解决方案会遇到问题。

有没有办法使这项工作?

0 投票
1 回答
4786 浏览

logging - 如何通过 MDC logback 功能传递日志文件名

我想为我的日志名称使用 logback MDC 功能,但我输入%PARSER_ERROR[X]了文件名。可能无法为日志文件指定名称。在我的日志文件模式参数传递没有问题。任何帮助,将不胜感激。

这是我的 logback.xml 文件内容:

编辑:这是我的过滤器

在某处我读到我应该使用${myDefinedName}模式而不是%X{myDefinedName},但我无法正确检查它,因为日志是在没有 MDC 参数的应用程序部署过程中创建的。如何仅在传递 MCD 参数时才开始记录?

0 投票
2 回答
2398 浏览

java - 默认 log4j MDC 值

有谁知道如何使用 log4j 的配置 xml 为 MDC 中缺少的条目指定默认值?我在我的 XML 文件中定义了一个 appender,如下所示:

有问题的部分是来自 MDC (%X{orderID}) 的订单 ID。我四处搜索,只发现同一个线程的重复项说的是 $${orderID:-DefaultValue},但这在这种情况下不起作用。当在没有订单 ID 的上下文中收到日志消息时,我需要能够将值默认为 0 或 -1 或其他一些标记值

0 投票
2 回答
1487 浏览

logging - 为什么我们在 Logback/SLF4J 中使用 MDC.remove()?

我知道 MDC 用于客户端服务器,进行日志记录以找出哪个日志用于哪个客户端。(参考

但是我们为什么使用MDC.remove()?

是内存效率问题吗?

0 投票
1 回答
165 浏览

java - MDC 区分模块之间的日志记录

我的软件使用面向服务的体系结构 (SOA)。所有服务(为简单起见,我们称它们为模块)写入单个日志文件。我想区分模块之间的日志记录。下面是我希望我的日志消息的样子。

我看到这样做的好处是我可以在“跟踪”日志时获取必要的信息。此外,在分析日志时,我可以 grep 必要的模块信息。这是可以实现的吗?我使用 log4j 作为我的日志记录实用程序。请注意,每个模块可以有多个包(包的层次结构)。我遇到的最接近实现这一点的方法是使用 MDC。