是否有可能为 log4net 设置一个appender,如果它符合阈值级别,它会将信息记录到两个文件中。如果它是调试它是INFO级别它将编写除调试之外的所有内容,它写入包括调试在内的所有内容并保留这两个。我可以使用两个appender来完成它,但是我想只有一个变量可以根据日志文件写入的阈值级别,只有一个或两者来计算。
<appender name="Name"
type="log4net.Appender.RollingFileAppender,log4net">
<file value="Path" />
<treshold value="info" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="2000KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<Header value="[Start] " />
<Footer value="[End] " />
<ConversionPattern value="%-5level %message%newline" />
</layout>
</appender>
&#13;
答案 0 :(得分:0)
您可以将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则同时包含这两个消息。