加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么log4net在配置之前创建一个空的日志文件?

发布时间:2020-12-15 22:12:41 所属栏目:百科 来源:网络整理
导读:由于某种原因,我的log4net在我的调试/发布文件夹中创建了一个空日志文件.示例文件名是“(null)20150409.txt”. 我不知道如何告诉它不要这样做.我正在以编程方式配置log4net,但是这个空文件是在实际运行配置例程之前创建的,可能是App.config文件本身的结果.
由于某种原因,我的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:Imageslog-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);

如何在不影响正常工作的其余日志记录的情况下防止创建此空文件?

解决方法

我也有同样的问题.进行研究( here,here和 here),错误是因为你已经调用了log4net.Config.XmlConfigurator.Configure();在设置log4net属性之前.

如果你像我一样,很可能你已经在AssemblyInfo.cs文件中再次配置了log4net.因为AssemblyInfo中的记录器将首先被加载,所以每次应用程序启动时它都会创建另一个(null)文件.

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读