Я бы предложил также использовать Фильтры . Однако, так как я изо всех сил пытался найти полную картину, когда пытался реализовать фильтр, я публикую пример фрагмента созданного мной Configutation file
, который указывает, куда идут фильтры.
Фильтр, который вы собираетесь использовать, в этом случае будет
log4net.Filter.LoggerMatchFilter ---- (Сопоставляется с началом
имя регистратора.)
Подсказка в файле config
для Log4Net важно, где вы размещаете свои теги, и их приоритет действительно имеет значение. Таким образом, в этом случае тег <filter>
следует после открывающего тега <appender>
и до его тега <file value = ... />
.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFile.PassedDevices" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="Foo.namespace.bar.mySubclass" />
<acceptOnMatch value="false" />
</filter>
<file value="myPassedDevices.log" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%timestamp %level - %message [%thread] %logger%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFile" /> <!-- My other appender which logs all and I cut it out in this snippet. Remember that you should reference all your appenders in this tag to make them work.-->
<appender-ref ref="RollingFile.PassedDevices" />
</root>
</log4net>
</configuration>
В этом методе у вас может быть несколько appenders
, которые вы можете перенаправить результаты регистрации определенного регистратора в отдельный appender
вместо их игнорирования. Например, один appender
для всех журналов и один для отфильтрованных журналов для определенного class
.