NDC 和 MDC
NDC ( Nested Diagnostic Context )和 MDC ( Mapped Diagnostic Context )是 log4j 种非常有用的两个类,它们用于存储应用程序的上下文信息( context infomation ),从而便于在 log 中使用这些上下文信息。
NDC 采用了一个类似栈的机制来 push 和 pop 上下文信息,每一个线程都独立地储存上下文信息。比如说一个 servlet 就可以针对每一个 request 创建对应的 NDC ,储存客户端地址等等信息。
当使用的时候,我们要尽可能确保在进入一个 context 的时候,把相关的信息使用 NDC.push(message); 在离开这个 context 的时候使用 NDC.pop() 将信息删除。另外由于设计上的一些问题,还需要保证在当前 thread 结束的时候使用 NDC.remove() 清除内存,否则会产生内存泄漏的问题。
存储了上下文信息之后,我们就可以在 log 的时候将信息输出。在相应的 PatternLayout 中使用 ”%x” 来输出存储的上下文信息,下面是一个 PatternLayout 的例子:
%r [%t] %-5p %c{2} %x - %m%n
使用NDC 最重要的好处就是,当我们想输出一些上下文的信息的时候,不需要让logger去寻找这些信息,而只需要在适当的位置进行存储,然后再配置文件中修改 PatternLayout。在最新的log4j 1.3版本中增加了一个org.apache.log4j.filters.NDCMatchFilter,用来
根据NDC中存储的信息接受或拒绝一条log信息。
MDC 和NDC非常相似,所不同的是MDC内部使用了类似map的机制来存储信息,上下文信息也是每个线程独立地储存,所不同的是信息都是以它们的key值存储 在”map”中。相对应的方法,MDC.put(key, value); MDC.remove(key); MDC.get(key); 在配置PatternLayout的时候使用:%x{key}来输出对应的value。同样地,MDC也有一个 org.apache.log4j.filters.MDCMatchFilter。这里需要注意的一点,MDC是线程独立的,但是一个子线程会自动获得 一个父线程MDC的copy。
至于选择NDC还是MDC要看需要存储的上下文信息是堆栈式的还是key/value形式的。
动态修改日志配置
在开发过程中,我们经常会遇到修改log4j配置的情况,在这种情况下,频繁重启应用显然是不可接受的。幸好log4j提供了自动重新加载配置文件的能力,在配置文件修改后,便会自己重新加载配置。在1.2及以前的版本中 DOMConfigurator 和 PropertyConfigurator 都提供了 configureAndWatch 方法,对指定的配置文件进行监控,并且可以设置检查的间隔时间。
相关推荐
MDC04、MDC02中文手册
详细介绍华为MDC平台解决方案,包括MDC硬件平台、MDC软件平台、MDC工具链、车规和质量,是了解和学习MDC平台的优质资料。
在认知无线电网络中,协作频谱感知技术可有效地缓解本地感知场景中存在的隐藏终端等问题。为了获得更大的协作增益,该文采用基于数据融合的协作...结果表明,N-P准则下给出的两种优化加权融合方案MDC和NDC性能相近,且均比E
MOTO MDC1200信令
华为MDC示例sample代码
mdc1200编解码库 mdc1200编解码库 mdc1200编解码库 mdc1200编解码库 mdc1200编解码库
MDC1200编码和解码软件算法 mdc_encode.c mdc_decode.c mdc_common.c mdc_test.c
自己变成生成的MDC1200测试片断。 用来测试MDC解码器。
MDC1200信令解码软件通过声卡输入对讲机收到的MDC1200信令音,该软件就会将MDC1200信令音译回原代表的ID号,就像gp(m)338、mcs2000等机型的信令ID显示一样
显示MOTO对讲机MDC1200信令ID号。
基于vxworks系统的gpio模拟mdc/mdio(smi)驱动参考代码。基于vxworks系统的gpio模拟mdc/mdio(smi)驱动参考代码。
mdc加密算法
MDC-900 导航雷达中文操作说明,中文说明书,珍贵资料!
MDC编码[定义].pdf
MAC接口\MII_MDC详解,共享学习!
华为MDC 智能驾驶计算平台.pdf
HCIA-MDC Application Developer V1.0版本说明,pdf HCIA-MDC Application Developer V1.0考试大纲pdf HCIA-MDC Application Developer V1.0培训教材pdf HCIA-MDC Application Developer V1.0实验手册pdf HCIA- MDC ...
MDC_Manifest_Configurator-Ubuntu18-
MDC600信令波形,自己的芯片产生出来,供接收机测试使用。
MDC4杂凑算法,用c语言实现,大家可以下载看看,交流交流