8
votes

Comment et log4net filtres ensemble

Je voudrais créer un appendeur qui ne se connecte que pour un niveau particulier et uniquement pour un enregistreur particulier. De ce que je vois et basé sur Ce tutoriel , les filtres sont ordiques ensemble. Comment puis-je et les filtres log4net ensemble? Voici un exemple de ce que je fais: xxx


1 commentaires

Dupliqué possible de filtres log4net "ou"


3 Réponses :


2
votes

Solution de contournement

Je viens de trouver la solution de contournement suivante qui semble faire l'affaire. Premièrement, j'ai supprimé le filtre Loggeromatchs de l'appendeur. Ensuite, j'ai modifié les paramètres de l'enregistreur comme tel: xxx

car je n'ai qu'un seul filtre ma logique de filtre va bien. La section Logger pointe uniquement sur cet appendeur uniquement pour mon enregistreur choisi, mais tous les autres annexiers prennent également l'événement car ils sont spécifiés à la racine. Cela fonctionne, mais cela n'explique pas comment et les filtres ensemble dans l'appendeur. J'aimerais toujours savoir.


0 commentaires

9
votes

Vous pouvez écrire une personnalisée et une personnalisation, ce qui est assez facile. Vous pouvez utiliser le code posté ici - https://stackoverflow.com/a/8859037/984438

Utilisation Soyez comme: xxx


1 commentaires

Ne sonne pas trop mal, mais je suis surpris que cette fonctionnalité ne soit pas intégrée à Log4Net



7
votes

Vous pouvez utiliser ForwardingAppender (voir Exemples de configuration ) et mettre un filtrer là-bas et l'autre dans votre appendend cible (ou les chaînerez-les à volonté).

<appender name="FilterOnlyInfo" type="log4net.Appender.ForwardingAppender">
  <!--log only INFO level-->
  <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="INFO" />
  </filter>
  <appender-ref ref="FinalAppender" />
</appender>
<appender name="FinalAppender">
  <!--log only UserController logger-->
  <filter type="log4net.Filter.LoggerMatchFilter">
    <loggerToMatch value="MyLogger" />
  </filter>
</appender>


0 commentaires