即使线程有名称,如何在log4net追加器中包含线程号?
在log4net配置中的ConversionPattern中,是否有方法指定线程号,即使它有名称即使线程有名称,如何在log4net追加器中包含线程号?,log4net,Log4net,在log4net配置中的ConversionPattern中,是否有方法指定线程号,即使它有名称 e、 g.类似以下内容:[7]ThreadFoo它看起来不受支持 根据列出所有输出选项的PatternLayout类文档,%thread变量似乎包装了您要更改的行为 你可以考虑使用进程ID吗?取决于你的最终目标是什么 看看这个,它看起来像: log4net.GlobalContext.Properties["pid"] = Process.GetCurrentProcess().Id; 和配置使用
e、 g.类似以下内容:
[7]ThreadFoo
它看起来不受支持
根据列出所有输出选项的PatternLayout类文档,%thread
变量似乎包装了您要更改的行为
<>你可以考虑使用进程ID吗?取决于你的最终目标是什么
看看这个,它看起来像:
log4net.GlobalContext.Properties["pid"] = Process.GetCurrentProcess().Id;
和配置使用
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{pid}" />
</layout>
您可以将线程id添加到线程名称中:
Thread myThreadObj = new Thread(...);
myThreadObj.Name = "The thread name " + myThreadObj.ManagedThreadId;
我假设您需要使用
ThreadContext
而不是GlobalContext
,因为他需要线程级属性。实际上,我只需要始终打印线程ID,即使有问题的线程有名称。这是因为我正在处理一个类,该类创建一组线程,并给它们命名。当您拥有该类的多个实例时,您最终会在日志中拥有多个同名线程。我想我会选择自定义/扩展的PatternLayout类。谢谢