Logging Quartz.NET(群集),ADOJobStore将触发_状态错误,但不会记录任何错误

Logging Quartz.NET(群集),ADOJobStore将触发_状态错误,但不会记录任何错误,logging,quartz-scheduler,quartz.net,Logging,Quartz Scheduler,Quartz.net,我在ADOJobStore中使用Quartz.NET 2.3.2集群模式。它有8个作业,每个作业有一个简单的触发器。所有作业都配置了[DisallowConcurrentExecution] 我面临的问题是——在运行几个小时(有时30分钟)后,一些作业进入触发器状态错误(查询的QRTZ_触发器表),而没有将任何错误信息记录在石英日志文件中。Pl在下面找到quartz.server.exe.config的相关部分 目前,我也正在隔离此问题-我目前仅从一台服务器运行Quartz(重新创建的架构) 要

我在ADOJobStore中使用Quartz.NET 2.3.2集群模式。它有8个作业,每个作业有一个简单的触发器。所有作业都配置了[DisallowConcurrentExecution]

我面临的问题是——在运行几个小时(有时30分钟)后,一些作业进入触发器状态错误(查询的QRTZ_触发器表),而没有将任何错误信息记录在石英日志文件中。Pl在下面找到quartz.server.exe.config的相关部分

目前,我也正在隔离此问题-我目前仅从一台服务器运行Quartz(重新创建的架构)

要添加更多信息,所有作业“执行”方法都有一个主尝试捕获,以防止任何异常到达Quartz Core。如果必须更改,请告诉我。我一直在阅读关于在Job.executecatch区域中使用“JobExecutionExecution”的内容。我不确定它的用途

    <common>
        <logging>
          <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1213">
            <arg key="configType" value="INLINE"/>
          </factoryAdapter>
        </logging>
    </common>

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %l - %m%n"/>
    </layout>
  </appender>
  <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %l - %m%n"/>
    </layout>
  </appender>
  <appender name="QuartzInternalLog" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="Trace/QuartzInternalLogFile_%date{yyyyMMdd}.txt"/>
    <appendToFile value="true"/>
    <maximumFileSize value="1024KB"/>
    <maxSizeRollBackups value="1000" />
    <rollingStyle value="Size"/>
    <datePattern value="yyyyMMdd" />
    <staticLogFileName value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d{HH:mm:ss} [%t] %-5p %c - %m%n"/>
    </layout>
  </appender>
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="Log/ABCXYZIntService_%date{yyyyMMdd}.log" />
    <appendToFile value="true" />
    <maxSizeRollBackups value="2" />
    <maximumFileSize value="1MB" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <staticLogFileName value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
    </layout>
  </appender>
  <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="admin@abc.com" />
    <from value="admin@abc.com" />
    <subject value="Sample Subject" />
    <smtpHost value="smtp.abc.com" />
    <bufferSize value="512" />
    <lossy value="true" />
    <evaluator type="log4net.Core.LevelEvaluator">
      <threshold value="WARN"/>
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <logger name="ErrorLogger">
    <level value="All" />
    <appender-ref ref="LogFileAppender" />
  </logger>
  <logger name="EmailLogger">
    <level value="Error" />
    <appender-ref ref="SmtpAppender" />
  </logger>


  <logger name="Quartz">
    <level value="DEBUG" />
    <appender-ref ref="QuartzInternalLog" />
  </logger>

</log4net>
<!-- 
    We use quartz.config for this server, you can always use configuration section if you want to.
    Configuration section has precedence here.  
  -->
<quartz>
  <add key="quartz.checkConfiguration" value="false"/>
  <add key="quartz.server.serviceName" value="ABC"/>
  <add key="quartz.server.serviceDisplayName" value="ABC"/>
  <add key="quartz.server.serviceDescription" value="ABC"/>
  <add key="quartz.scheduler.instanceName" value="ABCScheduler"/>
  <add key="quartz.scheduler.instanceId" value = "AUTO"/>
  <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
  <add key="quartz.threadPool.threadCount" value="10"/>
  <add key="quartz.threadPool.threadPriority" value="Normal"/>
  <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz"/>
  <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
  <add key="quartz.scheduler.exporter.type" value="Quartz.Simpl.RemotingSchedulerExporter, Quartz"/>
  <add key="quartz.scheduler.exporter.port" value="555"/>
  <add key="quartz.scheduler.exporter.bindName" value="QuartzScheduler"/>
  <add key="quartz.scheduler.exporter.channelType" value="tcp"/>
  <add key="quartz.scheduler.exporter.channelName" value="httpQuartz"/>
  <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"/>
  <add key="quartz.jobStore.dataSource" value="default"/>
  <add key="quartz.jobStore.tablePrefix" value="QRTZ_"/>
  <add key="quartz.jobStore.clustered" value="true"/>
  <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.SimpleSemaphore, Quartz"/>
  <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz"/>
  <add key="quartz.dataSource.default.provider" value="SqlServer-20"/>
  <add key="quartz.jobStore.useProperties" value="true"/>
  <add key="quartz.jobStore.selectWithLockSQL" value="SELECT * FROM {0} LOCKS UPDLOCK WHERE LOCK_NAME = @ lockName"/>
  <add key="quartz.dataSource.default.connectionStringName" value="QuartzStore"/>
  <add key="quartz.dataSource.default.connectionString" value="Data Source=MyServer;Initial Catalog=MyDB;User ID=test;Password=test"/>
</quartz>

<appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

我解决了这个问题。这个问题在我们的UAT环境中。SIT环境中还有另一个Quartz作业服务,它指向UAT环境的Quartz数据库。这可能会导致争用问题

这个url给了我一个提示-