Ce site dit
Les enregistreurs peuvent se voir attribuer des niveaux. Les niveaux sont des instances de la classe log4net.Core.Level. Les niveaux suivants sont définis par ordre de priorité croissante :
- TOUT
- DÉBOGUER
- INFO
- PRÉVENIR
- ERREUR
- FATAL
- DE
DEBUG semble avoir la priorité la plus basse et ERROR est plus élevé.
Question
- Si je définis les exemples Min et Max DEBUG et ERROR, il imprime tout DEBUG, INFO, WARN et ERROR. Sans utilisation de filtre min et max. Si je spécifie ERROR (Logging level = ERROR) Inclura-t-il DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
Au lieu d'un filtre minimum et maximum. Est-il possible de configurer un niveau et d'inclure tous les autres niveaux inférieurs pour la journalisation.
Exemple - Réglez le niveau comme Erreur, il inclura DEBUG, INFO, WARN et ERROR. Est-ce possible avec log4net?
Publication de la configuration de log4net basée 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>
levelMax
? Je pense que cela devrait inclure tout ce qui se trouve en dessous si vous ne spécifiez pas unlevelMin
Réponses:
Cela peut aider à comprendre ce qui est enregistré à quel niveau les enregistreurs peuvent se voir attribuer des niveaux. Les niveaux sont des instances de la classe log4net.Core.Level. Les niveaux suivants sont définis par ordre de gravité croissante - Niveau de journal.
Nombre de niveaux enregistrés pour chaque niveau de réglage:
la source
Pour la plupart des applications, vous souhaitez définir un niveau minimum mais pas un niveau maximum.
Par exemple, lors du débogage de votre code, définissez le niveau minimum sur DEBUG, et en production, définissez-le sur WARN.
la source
<level value="ALL" />
en<level value="WARN" />
et vous n'obtiendrez que les avertissements et les erreurs.DEBUG affichera tous les messages, INFO tous en plus des messages DEBUG, et ainsi de suite.
Habituellement, on utilise INFO ou WARN. Cela dépend de la politique de l'entreprise.
la source
Voici un code indiquant la priorité de tous les niveaux de log4net:
la source
Comme d'autres l'ont noté, il est généralement préférable de spécifier un niveau de journalisation minimum pour enregistrer ce niveau et tout autre niveau plus sévère que lui. Il semble que vous ne pensiez qu'aux niveaux de journalisation à l'envers.
Cependant, si vous souhaitez un contrôle plus fin sur la journalisation des niveaux individuels, vous pouvez demander à log4net de n'enregistrer qu'un ou plusieurs niveaux spécifiques à l'aide de la syntaxe suivante:
Ou pour exclure un niveau de journalisation spécifique en ajoutant un nœud «refuser» au filtre.
Vous pouvez empiler plusieurs filtres ensemble pour spécifier plusieurs niveaux. Par exemple, si vous ne vouliez que les niveaux WARN et FATAL. Si les niveaux souhaités étaient consécutifs, le LevelRangeFilter est plus approprié.
Doc de référence: log4net.Filter.LevelMatchFilter
Si les autres réponses ne vous ont pas donné suffisamment d'informations, j'espère que cela vous aidera à obtenir ce que vous voulez de log4net.
la source
by adding a "deny" node to the filter
Comment?C'est vrai, la documentation officielle ( Apache log4net ™ Manual - Introduction ) indique qu'il existe les niveaux suivants ...
... mais curieusement quand je regarde l'assembly log4net.dll, v1.2.15.0 classe scellée log4net.Core.Level Je vois les niveaux suivants définis ...
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. De plus, quelle est la véritable priorité de tous ces niveaux?
la source
Essayez comme ça, ça a marché pour moi
Cela enregistre 3 types d'erreurs - erreur, information et avertissement
la source