如何在日志输出中包含LogicalThreadContext

本文关键字:包含 LogicalThreadContext 输出 日志 | 更新日期: 2023-09-27 18:05:45

来自LogicalThreadContext文档:

逻辑线程上下文有一个属性映射和一个堆栈。的属性和堆栈可以包含在日志消息的输出中。PatternLayout支持选择和输出这些属性。

但是%x模式没有从LogicalThreadContext.Stacks["LDC"]输出任何东西。我在文档中找不到任何模式来输出它。

如何将其包含到日志中?

如何在日志输出中包含LogicalThreadContext

你可以用

来包装你的代码
using (log4net.ThreadContext.Stacks["stackName"].Push("Text you want to stack"))
{
    [your code]
}

并添加到你的模式

(%property{stackName})

例如如果你有多个级别,你可以为堆栈使用相同的名称:

using (log4net.ThreadContext.Stacks["SN"].Push("level 1"))
{
    using (log4net.ThreadContext.Stacks["SN"].Push("level 2"))
    {
        log.Debug("Log Text");
    }
}

使用类似

的模式
(%property{SN}) [%message]

将输出类似

的内容
(level 1 level 2) [Log Text]

如果你想了解更多信息,你可以看看Jim Christopher的博客