【发布时间】:2015-10-16 17:33:18
【问题描述】:
我的 log4net 出于某种原因在我的调试/发布文件夹中创建了一个空日志文件。示例文件名为“(null) 20150409.txt”。
我不确定如何告诉它不要那样做。我正在以编程方式配置 log4net,但这个空文件是在配置例程实际运行之前创建的,可能是 App.config 文件本身的结果。
这里是 App.config 文件:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender"/>
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<!--http://logging.apache.org/log4net/release/config-examples.html-->
<!--http://logging.apache.org/log4net/release/faq.html-->
<!--<param name="File" value="C:\Images\log-file.txt" />-->
<file type="log4net.Util.PatternString" value="%property{LogFileName}"/>
<staticLogFileName value="false"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Date"/>
<datePattern value="' 'yyyyMMdd'.txt'"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
</log4net>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>
这是 C# 配置代码(看起来工作正常):
log4net.GlobalContext.Properties["LogFileName"] = LogFileName;
// Full path to log file
log4net.Config.XmlConfigurator.Configure();
Log.Debug("CV3 Launched with log file located here: " + LogFileName);
如何在不影响其他正常工作的日志记录的情况下防止创建此空文件?
【问题讨论】:
-
您是否尝试在
app.config中使用忽略节处理程序?那应该避免空文件。 -
在 app.config 中的何处/如何放置忽略部分处理程序?你能提供一个sn-p吗?谢谢。
-
您的 AssemblyInfo.cs 文件中有
[assembly: log4net.Config.XmlConfigurator(Watch = true)]吗? -
我相信是因为
datePattern元素。此外,您使用的是 RollingFileAppender,但是当它滚动时,它不会使用您提供的日志文件名,而是会根据 datePattern 创建一个..
标签: c# log4net app-config