如何将 LogicalThreadContext 包含到日志输出中?
How to include LogicalThreadContext into logging output?
来自 LogicalThreadContext
文档:
The Logical Thread Context has a properties map and a stack. The
properties and stack can be included in the output of log messages.
The PatternLayout supports selecting and outputting these properties.
但是 %x
模式不会从 LogicalThreadContext.Stacks["LDC"]
输出任何内容。我在 docs 中找不到任何模式来输出它。
如何将其包含到日志中?
你可以用
包装你的代码
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's blog
来自 LogicalThreadContext
文档:
The Logical Thread Context has a properties map and a stack. The properties and stack can be included in the output of log messages. The PatternLayout supports selecting and outputting these properties.
但是 %x
模式不会从 LogicalThreadContext.Stacks["LDC"]
输出任何内容。我在 docs 中找不到任何模式来输出它。
如何将其包含到日志中?
你可以用
包装你的代码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's blog