以自定义格式记录Quartz.Net作业的执行情况



我使用Quartz.Net作为调度系统的Windows服务。内置的日志记录系统使用Common.logging框架,但只记录"初始化期间的一些信息,然后只记录有关Jobs执行时出现严重问题的消息"(请参阅底部链接)。

为了记录我的作业的实际历史执行情况,我通过在服务的quartz.config文件中添加以下行成功地配置了LoggingJobHistoryPlugin

quartz.plugin.triggHistory.type = Quartz.Plugin.History.LoggingJobHistoryPlugin

在这一点上,执行日志记录工作良好(在所有的appenders中-SQL数据库、文件等)

426 2014-11-07 10:30:05.997 ServerScheduler_Worker-7    INFO    Quartz.Plugin.History.LoggingJobHistoryPlugin.JobWasExecuted(c:WorkOpenSourcequartznetsrcQuartzPluginHistoryLoggingJobHistoryPlugin.cs:432) Job Admin.Auto Sync execution complete at 08:30:05 11/07/2014 and reports: 
425 2014-11-07 10:30:00.070 ServerScheduler_Worker-7    INFO    Quartz.Plugin.History.LoggingJobHistoryPlugin.JobToBeExecuted(c:WorkOpenSourcequartznetsrcQuartzPluginHistoryLoggingJobHistoryPlugin.cs:383)    Job Admin.Auto Sync fired (by trigger admin.Admin) at: 08:30:00 11/07/2014

我试图实现的是更改这里描述的默认日志记录格式。我尝试在quartz.config文件中设置这些行:

quartz.plugin.triggHistory.jobToBeFiredMessage = *** Job {1}.{0} fired (by trigger {4}.{3}) at: {2, date, HH:mm:ss MM/dd/yyyy}
quartz.plugin.triggHistory.jobSuccessMessage = *** Job {1}.{0} execution complete at {2, date, HH:mm:ss MM/dd/yyyy} and reports: {8}
quartz.plugin.triggHistory.jobFailedMessage = *** Job {1}.{0} execution failed at {2, date, HH:mm:ss MM/dd/yyyy} and reports: {8}

但在我添加这些行之后,我在日志中得到了以下错误:

384 2014-11-07 10:24:00.037 ServerScheduler_Worker-3    ERROR   Quartz.Core.QuartzScheduler.NotifySchedulerListenersError(c:WorkOpenSourcequartznetsrcQuartzCoreQuartzScheduler.cs:1877) Unable to notify JobListener(s) of Job to be executed: (Job will NOT be executed!). trigger= Test.Tr5 job= Test.1 minute    
383 2014-11-07 10:23:00.027 ServerScheduler_Worker-2    ERROR   Quartz.Core.QuartzScheduler.NotifySchedulerListenersError(c:WorkOpenSourcequartznetsrcQuartzCoreQuartzScheduler.cs:1877) Unable to notify JobListener(s) of Job to be executed: (Job will NOT be executed!). trigger= Test.Tr5 job= Test.1 minute    
382 2014-11-07 10:22:00.143 ServerScheduler_Worker-1    ERROR   Quartz.Core.QuartzScheduler.NotifySchedulerListenersError(c:WorkOpenSourcequartznetsrcQuartzCoreQuartzScheduler.cs:1877) Unable to notify JobListener(s) of Job to be executed: (Job will NOT be executed!). trigger= Test.Tr5 job= Test.1 minute    

有iddea吗?我该怎么做?

API文档很遗憾是错误的,我现在已经在更新的2.0文档中更正了它。日期的正确格式是标准的.NET字符串格式:

quartz.plugin.triggHistory.jobToBeFiredMessage = *** Job {1}.{0} fired (by trigger {4}.{3}) at: {2:HH:mm:ss MM/dd/yyyy}
quartz.plugin.triggHistory.jobSuccessMessage = *** Job {1}.{0} execution complete at {2:HH:mm:ss MM/dd/yyyy} and reports: {8}
quartz.plugin.triggHistory.jobFailedMessage = *** Job {1}.{0} execution failed at {2:HH:mm:ss MM/dd/yyyy} and reports: {8}

最新更新