Ho copiato gli esempi log4net per implementare un livello di registro personalizzato, AUDIT. Ho definito AUDIT per avere un valore di 35000, tra DEBUG 30000 e INFO 40000.Come faccio a filtrare su un livello personalizzato in log4net?
Quanto segue è la mia sezione di configurazione. Ho un appender che registra tutti i livelli e una che si suppone di accedere solo i livelli di controllo (questo è solo per i test)
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender" >
<file value="testrun.log" />
<layout type="log4net.Layout.PatternLayout" >
<conversionPattern value="%date{HH:mm:ss:fff} [%thread] %-5level %logger{1} - %message%newline" />
</layout>
</appender>
<appender name="FileAppender.Audit" type="log4net.Appender.FileAppender" >
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="AUDIT" />
</filter>
<file value="testrun.audit.log" />
<layout type="log4net.Layout.PatternLayout" >
<conversionPattern value="%date{HH:mm:ss:fff} [%thread] %-5level %logger{1} - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<appender-ref ref="FileAppender.Audit" />
</root>
</log4net>
Il metodo di prova è
private static readonly IAuditLog log = AuditLogManager.GetLogger(typeof(Program));
public static void Main()
{
log.Debug("Debug");
log.Audit("Audit");
log.Info("Info");
}
Tuttavia, l'uscita dei appenders è lo stesso ...
13:09:11:540 [9] DEBUG Program - Debug
13:09:11:560 [9] AUDIT Program - Audit
13:09:11:560 [9] INFO Program - Info
l'uscita log4net di debug durante l'analisi del LevelMatchFilter è
log4net: Loading Appender [FileAppender.Audit] type: [log4net.Appender.FileAppender]
log4net:ERROR XmlHierarchyConfigurator: Unknown Level Specified [AUDIT]
log4net:WARN Unable to set property [levelToMatch] on object [log4net.Filter.LevelMatchFilter] using value [AUDIT] (with acceptable conversion types)
log4net: Setting Collection Property [AddFilter] to object [log4net.Filter.LevelMatchFilter]
Aggiornamento: non posso filtrare su QUALSIASI livello, anche i livelli già incorporati in log4net (come DEBUG). –