문제

응용 프로그램에서 몇 가지 사용자 정의 작업을 예약하기 위해 Quartz.net을 사용하고 있습니다. 1 초 안에 약 20 개의 디버그 항목을 기록한다는 점을 제외하고는 모든 것이 잘 작동합니다.

디버그 로깅을 끄는 방법을 모르겠습니다. 내가 운이 없으면서 그물에서 쳐다 보려고 했으므로 모든 도움이 정말 감사 할 것입니다.

디버그 항목은 다음과 같습니다

DEBUG 2009-05-12 03:24:14,000 8612670ms StdRowLockSemaphore    ObtainLock         - Lock 'TRIGGER_ACCESS' is desired by: SchedulerFactory_QuartzSchedulerThread
DEBUG 2009-05-12 03:24:14,029 8612699ms StdRowLockSemaphore    ExecuteSQL         - Lock 'TRIGGER_ACCESS' is being obtained: SchedulerFactory_QuartzSchedulerThread
DEBUG 2009-05-12 03:24:14,029 8612699ms StdRowLockSemaphore    ObtainLock         - Lock 'TRIGGER_ACCESS' given to: SchedulerFactory_QuartzSchedulerThread
DEBUG 2009-05-12 03:24:14,034 8612704ms StdRowLockSemaphore    ReleaseLock        - Lock 'TRIGGER_ACCESS' returned by: SchedulerFactory_QuartzSchedulerThread
DEBUG 2009-05-12 03:24:14,035 8612705ms StdRowLockSemaphore    ObtainLock         - Lock 'TRIGGER_ACCESS' is desired by: SchedulerFactory_QuartzSchedulerThread
DEBUG 2009-05-12 03:24:14,035 8612705ms JobRunShell            Run                - Calling Execute on job DEFAULT.ProcessIncomingMTRJob
도움이 되었습니까?

해결책

Quartz.net은 common.logging을 사용하므로 app.config/web.config에서 이와 같은 것을 사용합니다.

<configSections>
    <sectionGroup name="common">
        <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
</configSections>

<common>
    <logging>
        <factoryAdapter type="Common.Logging.Simple.**youradapterhere**, Common.Logging">
            <arg key="level" value="ERROR" />
        </factoryAdapter>
    </logging>
</common>

확실히 변경하십시오 youradapterhere 로깅을 완전히 비활성화하려는 경우 사용중인 실제 로깅 어댑터 또는 NooploggerFactoryAdapter에.


** 편집 : ** Ganesh의 의견에 따라 :

<sectionGroup name="common"> 
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/> 
</sectionGroup> 
<common>  
    <logging>  
        <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">  
            <arg key="configType" value="INLINE"/>  
            <arg key="configFile" value="filename"/>  
            <arg key="level" value="ERROR" /> <!-- add this line here -->
        </factoryAdapter>  
    </logging> 
</common>

** 편집 2 : **

주석을 읽고 싶지 않은 사람들의 이점을 위해 로그 레벨은 실제로 log4net 루트 구성에 설정되었습니다.

<log4net>
    <root>
        <level value="DEBUG" /> <!-- This is the value that needed changing -->
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>

다른 팁

Rytmis의 대답 공통 로깅 인프라를 통해 발생하는 모든 로깅을 줄이려면 훌륭합니다.

그러나 공통 로깅을 통해 더 많은 코드 로깅이있는 경우 Quartz에서 로깅의 탄약을 줄이려면 (나머지 코드가 아닙니다), 내가 추천하는 것은 이것입니다 :

log4net config xml에서app.config 일반적으로) 이미 다음과 같은 것이있을 것입니다.

    <root>
        <level value="ALL" />
        <appender-ref ... />
        ...
    </root>

그대로 두십시오. 그리고 그 후에 (또는 내부의 어디에나 <log4net> 구성 섹션) 추가하기 만하면됩니다.

    <logger name="Quartz">
        <level value="ERROR" />
    </logger>

이것 <logger> 섹션은 네임 스페이스 "쿼츠"로 모든 로거를 구성합니다. 이 예에서는 쿼츠가 레벨로 로깅을합니다. ERROR 내 앱의 나머지 부분은 레벨로 로그인하지만 ALL.

NLOG 에서이 작업을 수행 해야하는 경우 NLOG.config의 가장 많은 규칙으로 다음을 추가하십시오.

<!-- Disable Quartz info logging -->
<logger name="Quartz*" minlevel="Trace" maxlevel="Info" final="true" />

이것은 당신이 그 변화를 원하지 않으면 다른 로거에게 경고, 오류, 치명적인 경고를 계속할 것입니다. maxlevel="Info" 에게 maxlevel="Fatal"

nlog (nlog.config)를 사용할 때 쿼츠 로깅을 전혀 원하지 않는 사람들을 위해 (즉, Jobs Code 내에서 로깅이 충분합니다) :

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="info"
      internalLogFile="path_to_nlog_log_file">

  <!-- the targets to write to -->
  <targets async="true">
    <target name="database" type="Database">
      <commandText>
        <!-- insert into some table -->
      </commandText>
      <!-- parameters here -->
    </target>    

    <target xsi:type="Null" name="blackhole" />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <!--Skip Microsoft/Quartz logs and so log only own logs-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="Quartz*" minlevel="Trace" maxlevel="Info" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Debug" writeTo="database" />
  </rules>
</nlog>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top