问题标签 [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 回答
3535 浏览

log4j - Log4j SyslogAppender 是否支持 MDC 和 NDC

真的很简单,Log4j SyslogAppender 是否支持 MDC 和 NDC,因为输出是结构化数据,即使用协议的结构化数据特性?

此外,对于可以放入 MDC 并成功附加到日志的内容是否有任何限制?

0 投票
2 回答
3633 浏览

java - Log4j 动态参数

我有一个在 spring 框架上运行并使用 log4j 进行日志记录的 j2ee Web 应用程序。我的 log4j.properties 文件中有这一行。这将在我的数据库中插入日志。如何在消息部分设置动态值,以便以某种方式附加当前登录的用户。包含当前用户信息的 bean 对象位于应用程序上下文中。

log4j.appender.dbLog.sql = INSERT INTO LOGGING (log_date, log_level, location, message) VALUES ('%d{yyyy/MM/dd HH:mm:ss}', '%-5p', '%C-% L', '%m')

0 投票
1 回答
5661 浏览

security - 解密 GPG 消息时出现 mdc 错误

我有一个客户端和服务器系统,它们定期运行计划任务并通过已由 gpg 加密的 xml 文件进行通信。所有必需的公钥已在客户端和服务器之间成功交换。加密和解密调用是从批处理文件中完成的。

加密语法

gpg.exe --batch --yes --recipient %1 --output %4 --passphrase %5 --local-user %2 --sign --encrypt %3

解密语法

gpg.exe --batch --yes --output %3 --passphrase %4 --decrypt %2 2>%1

客户端创建一个 xml 文件,使用 gpg 使用服务器公钥对其进行加密,使用私钥签名并将其上传到服务器的 ftp 站点。服务器定期检查 ftp 文件夹中的新文件。对于任何新文件,它使用 gpg 解密,然后处理文件中的 xml。

对于服务器尝试解密的一些 xml 文件,我收到如下错误:

gpg: block_filter 00AA8400: 读取错误 (size=7841,a->size=395)

gpg: 编码无效的 mdc_packet

gpg:解密失败:无效数据包

gpg:block_filter:待处理字节!

需要注意的是,并非所有文件都发生这种情况,而只有一些文件会发生这种情况。我无法找到它失败的文件之间的任何共性。

有人熟悉这个错误的含义吗?欢迎任何有助于追踪此问题的建议。

0 投票
1 回答
544 浏览

log4j - perf4J 与 MDC

有谁知道 perf4J 是否支持 log4j MDC。我所有的日志语句都附加了 MDC 值,但是 perf4J 日志语句不显示 MDC 值。

请参见下文,我希望 MDCMappedValue 也将显示在 [TimingLogger] 日志语句的末尾。

18:35:48,038 INFO [LoginAction] 将用户 kermit 登录到应用程序 - MDCMappedValue 18:35:48,749 INFO [PostAuthenticationHandler] doPostAuthenticate() 已启动 - MDCMappedValue 18:36:03,653 INFO [PostAuthenticationHandler] 为 kermit 加载配置文件 - MDCMappedValue 18:36 :08,224 INFO [TimingLogger] 开始[1300905347914] 时间[20310] 标签[HTTP.Success] 消息[/csa/login.seam] -
18:36:09,142 INFO [TimingLogger] 开始[1300905368240] 时间[902] 标签[HTTP .Success] 消息[/csa/home.seam] -

0 投票
8 回答
80476 浏览

java - 如何将 MDC 与线程池一起使用?

在我们的软件中,我们广泛使用MDC来跟踪 Web 请求的会话 ID 和用户名等内容。这在原始线程中运行时工作正常。

但是,有很多事情需要在后台处理。为此,我们使用java.concurrent.ThreadPoolExecutorjava.util.Timer类以及一些自滚动的异步执行服务。所有这些服务都管理自己的线程池。

这就是Logback 的手册中关于在这样的环境中使用 MDC 的内容:

工作线程不能总是从启动线程继承映射的诊断上下文的副本。当 java.util.concurrent.Executors 用于线程管理时就是这种情况。例如,newCachedThreadPool 方法创建一个 ThreadPoolExecutor 和其他线程池代码一样,它具有复杂的线程创建逻辑。

在这种情况下,建议在将任务提交给执行程序之前在原始(主)线程上调用 MDC.getCopyOfContextMap()。当任务运行时,作为它的第一个动作,它应该调用 MDC.setContextMapValues() 以将原始 MDC 值的存储副本与新的 Executor 托管线程相关联。

这很好,但是很容易忘记添加这些调用,并且没有简单的方法来识别问题,直到为时已晚。Log4j 的唯一标志是您在日志中缺少 MDC 信息,而使用 Logback 您会获得陈旧的 MDC 信息(因为线程池中的线程从在其上运行的第一个任务继承其 MDC)。两者都是生产系统中的严重问题。

我看不出我们的情况有什么特别之处,但我在网上找不到太多关于这个问题的信息。显然,这不是很多人遇到的事情,所以必须有办法避免它。我们在这里做错了什么?

0 投票
1 回答
201 浏览

firefox - 调试 Firefox 扩展时如何检测语法错误

在处理大型 Firefox 插件时,我有时会不小心出现我的编辑器没有捕捉到的语法错误。发生这种情况时,调用

将根本无法导入或返回任何内容,没有任何有用的提示来说明在文件中查找语法错误的位置。当我的导入失败时,有什么方法可以让 Firefox 给我一些线索?

编辑:我解决了我自己的问题,结果证明我使用的代码具有对该navigator对象的全局引用。让这特别烦人的是代码在浏览器中加载时可以工作(正如 Wladimir 在下面建议的那样),但在我的扩展中导入时仍然会失败。

最终我求助于一种手动二进制搜索:我会删除一半的文件,然后查看导入是否仍然失败。如果是这样,那么我会删除剩下的一半并重复。只要它没有失败,我就可以更准确地了解问题出在哪里,这使我可以继续进行二分搜索或手动扫描较小的区域以查找问题。

这非常耗时,我仍然很感激有关如何加快此调试过程的任何建议。

0 投票
1 回答
6057 浏览

spring-mvc - How to insert the username into MDC for the entire web request

I am trying to use a Mapped Diagnostic Context to add the username of the user making a page request to all relevant logging statements. However I have tried three different ways to make it work without success:

  1. Pushing the username into the MDC after login and removing after logout. This method ends up mixing up which logging statement came from which user.
  2. Using a ServletFilter to push the username into the MDC on each page load and pop it back off as the request ends. This only catches some of the data and only in Spring security layer.
  3. Using a AOP @Around interceptor in front of all the Controller methods flat out didn't work.

Does anyone have any suggestions on how to make this happen?

0 投票
1 回答
223 浏览

firefox - MDC中的mar文件生成

我正在尝试在 firefox 构建中生成 complete.mar 文件。当我尝试生成 complete.mar 文件时,出现以下错误。

Sathi@HREF-22F4E8F33B /c/href/FF-5.1/tools/update-packaging $ sh make_full_update.sh complete.mar new /c/href/FF-5.1/tools/update-packaging/new /c/href/FF -5.1/tools/update-packaging 预完成文件丢失!

0 投票
4 回答
14006 浏览

java - 在log4j中使用MDC动态命名日志文件

是否有可能在运行时使用 MDC 来命名日志文件。

我有一个使用 tomcat docbase 同时被不同名称调用的 Web 应用程序。所以我需要为他们每个人都有单独的日志文件。

0 投票
0 回答
1788 浏览

java - Java MDC 混合会话数据

我使用 Log4j 作为日志框架。我正在使用 MDC 在应用程序中保存一些值,以便最终记录并获取事件助手中的值。但是如果服务器上出现错误/异常日志,我注意到其他会话值正在混淆。

像 DeptId 一样,需要记录的内容不存在,而其他内容已记录。

MDC 不是线程安全的吗?有什么解决办法吗?

例子