log4net日志在错误的文件中生成



我想为程序的特定部分创建一个不同的日志,因此我使用log4net在C#中创建了一个新的日志系统。我在app.config中创建了一个与现有节点相同的新节点(也需要默认日志(。app.config看起来像这样。

<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
<section name="partialfilelog" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:/Logs/DefaultLog.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="-1" />
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-7level   %date   %property{MemberName}   
%property{SourceLineNumber}   %message   %exception %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
<customLog>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="PartialFileAppender" />
</root>
<appender name="PartialFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:/Logs/CustomLog.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="-1" />
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-7level   %date   %property{MemberName}   
%property{SourceLineNumber}   %message   %exception %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
</customLog>
</configuration>

我已经创建了这个自定义节点,它的初始化方式如下。

private readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

打开app.config文件后,此记录器配置已正确完成。

if (File.Exists(appconfigpath))
{
xmlDocument.Load(File.OpenRead(appconfigpath));
log4net.Repository.ILoggerRepository loggerRepository = log4net.LogManager.CreateRepository(
Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(loggerRepository, 
(XmlElement)xmlDocument.SelectSingleNode("//partialfilelog/log4net"));
xmlDocument = null;
}

正在创建新的customlog文件。但是,每当我调用该方法在该文件中写入日志时,日志都会在defaultlog文件中创建(这些路径在值[value="C:\logs/CustomLog.log"]内的appender中提供,如下所示。(

我正在从startup.cs文件配置这两个记录器。有人能帮助我理解这里的问题吗?为什么我的日志生成在错误的文件中?我错过了什么或做错了什么?

您的配置文件仍然包含默认值。

更改<file type="log4net.Util.PatternString" value="C:/Logs/DefaultLog.log" /><file type="log4net.Util.PatternString" value="YourPathHere" />

最新更新