C# 如何设置Quartz.net工作线程名称?

C# 如何设置Quartz.net工作线程名称?,c#,.net,log4net,scheduling,quartz.net,C#,.net,Log4net,Scheduling,Quartz.net,如何在Quartz.net中设置工作线程的名称 [2009-12-15 08:56:25][DefaultQuartzScheduler\u Worker-1]信息 我想在日志中看到一些有意义的信息。我尝试使用JobDetail构造函数,但看起来我错了 var job=newjobDetail(“n1”,null,typeof(MyJob)); 通常您会对作业输出的内容感兴趣(它们应该有自己的记录器),而对线程不感兴趣 您是否有需要线程逻辑名称的特定情况?线程是池化的,并且不能保证哪个线程得到

如何在Quartz.net中设置工作线程的名称

[2009-12-15 08:56:25][DefaultQuartzScheduler\u Worker-1]信息
我想在日志中看到一些有意义的信息。我尝试使用
JobDetail
构造函数,但看起来我错了

var job=newjobDetail(“n1”,null,typeof(MyJob));

通常您会对作业输出的内容感兴趣(它们应该有自己的记录器),而对线程不感兴趣


您是否有需要线程逻辑名称的特定情况?线程是池化的,并且不能保证哪个线程得到要处理的作业类型。这就是为什么线程名称通常仅用于调试目的,以跟踪特定线程生命周期中发生的事情。

至少无法设置工作线程的名称。然而,我使用log4net的%property工具在日志文件中生成了有意义的线程名称

这是对一个老问题的新答案,但可能对某些人有所帮助

我不喜欢日志文件中的长石英线程名称[DefaultQuartzScheduler\u Worker-1]

相反,我希望log4net显示线程id。因此,您需要设置一个记录当前线程id的属性

我找到了这个班
这是记录计算上下文的lambda/func方式:

然后在log4net配置中调整conversionpattern以包含新属性。 我的看起来像这样:

<conversionPattern value="%d{dd.MM.yyyy HH:mm:ss,ffff} %-5level [%property{threadId}] - %message%newline" />


就这样。这样,每个线程的id将在运行时确定,并记录在自己的属性中。

是的,这纯粹是为了调试目的,而且我认为命名这些线程(至少前缀)将有助于在以后出现问题时审核日志
log4net.GlobalContext.Properties["threadId"] = new Log4NetContextProperty(() => Thread.CurrentThread.ManagedThreadId.ToString());
<conversionPattern value="%d{dd.MM.yyyy HH:mm:ss,ffff} %-5level [%property{threadId}] - %message%newline" />