Question

J'utilise Quartz.NET pour la planification des tâches personnalisées dans notre application. Tout fonctionne bien sauf qu'il enregistre une vingtaine d'entrées de débogage dans une seconde.

Je ne sais pas comment désactiver l'enregistrement de débogage. Toute aide serait vraiment apprécié comme je l'ai essayé de rechercher dans le filet avec pas de chance.

Les entrées de débogage ressemblent le ci-dessous

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
Était-ce utile?

La solution

Quartz.net utilise Common.Logging, donc quelque chose comme ça dans votre 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>

Assurez-vous de changer le youradapterhere à l'adaptateur d'enregistrement réelle que vous utilisez, ou NoOpLoggerFactoryAdapter si vous souhaitez désactiver la connexion entièrement.


** Edit: ** Basé sur le commentaire de 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>

** Edit 2: **

Pour les avantages de ceux qui ne veulent pas lire les commentaires, le niveau du journal a été effectivement mis dans la configuration de la racine log4net:

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

Autres conseils

Rytmis de réponse est très bien si vous veulent réduire tout votre exploitation forestière qui traverse l'infrastructure commune Logging.

Mais si vous avez plus de code logging par enregistrement commun, et vous voulez juste réduire le ammount de l'exploitation forestière de quartz ( et non du reste du code ), ce que je recommande est-ce :

Dans le xml de config log4net (généralement de app.config) vous avez probablement déjà quelque chose comme ceci:

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

Laissez-tel qu'il est. Et après (ou ne importe où dans la section de configuration <log4net>) ajouter ceci:

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

Cette section <logger> configure tous les enregistreurs avec l'espace de noms « Quartz ». Ainsi, dans cet exemple Quartz sera l'exploitation forestière avec le niveau ERROR alors que le reste de mon application se connectera avec le niveau ALL.

Si l'on a besoin de le faire en NLog simplement ajouter ce qui suit comme la règle supérieure de moste dans NLog.Config

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

Notez que cela reste encore Warn, erreur, aller fatale aux autres enregistreurs si vous ne voulez pas que maxlevel="Info" de changement maxlevel="Fatal"

Pour ceux qui ne veulent pas se connecter à quartz du tout (à savoir propre exploitation forestière du code de travail suffit) lors de l'utilisation NLog (nlog.config):

<?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top