145 votes

Hiérarchie et niveaux de journalisation de log4net

Ce site dice

Des niveaux peuvent être attribués aux enregistreurs. Les niveaux sont des instances de la classe log4net.Core.Level. Les niveaux suivants sont définis dans l'ordre priorité croissante :

  • TOUS
  • DEBUG
  • INFO
  • AVERTISSEMENT
  • ERREUR
  • FATAL
  • OFF

DEBUG semble avoir la priorité la plus basse et ERROR la plus élevée.

Question

  • Si je définis les exemples Min et Max DEBUG et ERROR, tout s'affiche : DEBUG, INFO, WARN et ERROR. Sans utiliser les filtres min et max. Si je spécifie ERROR (niveau de journalisation = ERROR), cela inclura-t-il DEBUG, INFO et WARN ?

    <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR"/> <param name="LevelMax" value="ERROR"/> </filter>

Au lieu d'un filtre min et max. Est-il possible de configurer un niveau et d'inclure tous les autres niveaux inférieurs dans l'enregistrement.

Exemple - Définissez le niveau comme Erreur, il inclura DEBUG, INFO, WARN et ERROR. Est-ce possible avec log4net ?

J'ai posté la configuration de log4net en me basant sur l'un des commentaires :

     <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        </configSections >
        <log4net debug="true">
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
        <layout type="log4net.Layout.XMLLayout" /> -->
        <param name="File" value="TestLog.log" />
        <param name="AppendToFile" value="false" />
        <layout type="log4net.Layout.PatternLayout">
            <header type="log4net.Util.PatternString" value="[START LOG] %newline" />
            <footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
            <conversionPattern value="%d [%t] %-5p - %m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG"/>
            <param name="LevelMax" value="ERROR"/>
        </filter>
    </appender>
<root>
        <level value="ALL" />
        <appender-ref ref="LogFileAppender" />
    </root>
    <logger name="log4NetExample">
        <!-- <appender-ref ref="B" /> -->
        <level value="ALL" />
        <appender-ref ref="LogFileAppender" />
    </logger>
</log4net>

8voto

barrypicker Points 654

Il est vrai que la documentation officielle ( Manuel Apache log4net™ - Introduction ) indique qu'il existe les niveaux suivants...

  • TOUS
  • DEBUG
  • INFO
  • AVERTISSEMENT
  • ERREUR
  • FATAL
  • OFF

... mais bizarrement quand je regarde l'assembly log4net.dll, v1.2.15.0 sealed class log4net.Core.Level je vois les niveaux suivants définis...

public static readonly Level Alert;
public static readonly Level All;
public static readonly Level Critical;
public static readonly Level Debug;
public static readonly Level Emergency;
public static readonly Level Error;
public static readonly Level Fatal;
public static readonly Level Fine;
public static readonly Level Finer;
public static readonly Level Finest;
public static readonly Level Info;
public static readonly Level Log4Net_Debug;
public static readonly Level Notice;
public static readonly Level Off;
public static readonly Level Severe;
public static readonly Level Trace;
public static readonly Level Verbose;
public static readonly Level Warn;

J'utilise TRACE en conjonction avec PostSharp OnBoundaryEntry et OnBoundaryExit depuis longtemps. Je me demande pourquoi ces autres niveaux ne figurent pas dans la documentation. En outre, quelle est la véritable priorité de tous ces niveaux ?

0voto

M Safari Points 1

Vous pouvez l'utiliser pour certains avertissements : (ajouter à l'annexe)

<filter type="log4net.Filter.LevelMatchFilter">
    <acceptOnMatch value="true" />
    <levelToMatch value="WARN" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

et si vous souhaitez que l'erreur soit enregistrée dans la plage d'alerte :

<filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="ERROR" />
    <levelMax value="ALERT" />
</filter>

-5voto

Dhananjay Points 1047

Essayez comme ceci, cela a fonctionné pour moi

<root>
  <!--<level value="ALL" />-->
  <level value="ERROR" />
  <level value="INFO" />
  <level value="WARN" />     
</root>

Il enregistre trois types d'erreurs : erreur, info et avertissement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X