C# 如何将每次执行的唯一threadID与log4net输出关联?

C# 如何将每次执行的唯一threadID与log4net输出关联?,c#,.net,log4net,C#,.net,Log4net,我正在使用log4net,当我记录消息时,我的threadID将在我的文件中复制。。我希望它是一个唯一的ID,这样它在文件中就不会存在两次,这样就便于搜索。我希望这是正确的。基本上,我的转换模式包括这些项目 <conversionPattern value="%date [%hex_thread] %method %-5level %logger – %message%newline"/> 然后输出将如下所示 2010-07-09 10:07:37917[0

我正在使用log4net,当我记录消息时,我的threadID将在我的文件中复制。。我希望它是一个唯一的ID,这样它在文件中就不会存在两次,这样就便于搜索。我希望这是正确的。基本上,我的转换模式包括这些项目

  <conversionPattern value="%date [%hex_thread] %method %-5level %logger – %message%newline"/>
然后输出将如下所示

2010-07-09 10:07:37917[0x00004]方法C信息方法C–消息


2010-07-09 10:07:37917[0x0000B]methodC INFO methodC–message

只要您使用相同的线程,您将拥有相同的线程id。您需要为每个操作创建一个新线程,并自己为其分配一个唯一的id


从您的问题来看,似乎您希望日志文件中的每一行都有一个唯一的id。不确定为什么要这样做,但如果这是目标,则不应使用线程id,而应使用一些“全局计数器”…

如果我的问题不清楚,请发表评论。。。我真的需要更快的反应。谢谢大家,如果邮件来自同一个线程,那么它将具有相同的线程ID-或者我遗漏了什么?请不要在标题上添加诉状。@ChrisF感谢您的澄清,我知道如果它是相同的线程,它肯定具有相同的线程ID。但我想让threadID独一无二。我希望它在十六进制格式,我希望它是不同于其余的消息在那一行。谢谢斯特凡。抱歉,我问错了,我不希望每行都有唯一的threadID。现在我要做的就是使我的threadID唯一,这与该行中的其余消息不同。例如,如果threadID是“A”(使用十六进制),那么当我搜索它时,它还将包括消息中出现的字母“A”。这就是我想要阻止的。我自己如何分配唯一ID?当您搜索[A]时,您将只找到对线程ID的任何引用。。。顺便说一句,“hex_-thread”属性不需要模式字符串中的[],您也可以删除它们或用其他内容替换它们。我的老板要求将[]添加到threadID中,这就是为什么我将其包含在[]中。我想出了一个办法。我在问题后面贴了我自己的修正。。经过深思熟虑,我想出了一个非常简单的解决办法。谢谢你抽出时间,斯蒂芬。
long id = System.Threading.Thread.CurrentThread.GetHashCode(); String str = id.ToString("X"); writer.Write("0x0000"+str);