Вы можете настроить log4net так, чтобы отдельные сообщения журнала записывались в два (или более) разных файла.Вы даже можете использовать для каждого файла свое пороговое значение.
Вот пример с двумя файлами журналов, один из которых называется basic.log, который содержит сообщения INFO или более поздние, и один, называемый details.log, который включает DEBUG или более поздниеСообщения.Пример показывает, что вызов log.Debug () будет выводиться только в файл details.log, а вызов log.Info () будет выводиться в обоих файлах.
Вот основнойпрограмма:
class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
log.Debug("This is a debug message");
log.Info("This is an info message");
}
}
И файл app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
</startup>
<log4net>
<appender name="BasicFile" type="log4net.Appender.RollingFileAppender, log4net">
<file value="C:\temp\basic.log"/>
<threshold value="INFO"/>
<appendToFile value="True"/>
<layout type="log4net.Layout.PatternLayout">
<Header value="[Start] " />
<Footer value="[End] " />
<ConversionPattern value="%-5level %message%newline" />
</layout>
</appender>
<appender name="DetailsFile" type="log4net.Appender.RollingFileAppender, log4net">
<file value="C:\temp\details.log"/>
<threshold value="DEBUG"/>
<appendToFile value="True"/>
<layout type="log4net.Layout.PatternLayout">
<Header value="[Start] " />
<Footer value="[End] " />
<ConversionPattern value="%-5level %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="BasicFile"/>
<appender-ref ref="DetailsFile"/>
</root>
</log4net>
</configuration>
Когда я запускаю это, в c: \ temp \ basic.log есть только сообщение INFO, а в c: \temp \ details.log содержит оба сообщения.