【问题标题】:Log4net error: Why Log4net created many log files instead of one log file by program start by using MPI (paralle or multi prozess)Log4net 错误:为什么 Log4net 使用 MPI(并行或多进程)通过程序启动创建了许多日志文件而不是一个日志文件
【发布时间】:2014-02-26 09:51:51
【问题描述】:

通过在我的应用程序(用 C# 编写)和 log4net 中使用 MPI(消息传递接口),我在单个文件中的日志输出存在问题。当我的应用程序有一点时间工作时,日志输出工作正常,但是当应用程序开始创建 log4net 时,有时不是一个日志文件而是两个或三个日志文件。这里举个例子:

正确(App启动和log4net构建一个日志文件):

  • Lo​​g_2014_02_25_[12.39.07]_Build_2014_02_25

错误(App启动和log4net构建三个日志文件):

  • Lo​​g_2014_02_25_[12.12.03]_Build_2014_02_25
  • Lo​​g_2014_02_25_[12.12.03]_Build_2014_02_252014_02_25
  • Lo​​g_2014_02_25_[12.12.03]_Build_2014_02_252014_02_25252014_02_25

我认为 log4net 会同时尝试在日志文件中写入一些内容。如果巧合的是日志文件被锁定并且 log4net 不能在同一个日志文件中写入。在这种情况下,创建的 log4net 可能会创建一个新的日志文件。简而言之,我认为问题出在 log4net 的 Minimal Lock 但我不确定也不知道如何解决该错误。

这里是我的 log4net 配置:

 <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
 <file type="log4net.Util.PatternString" value="Logs\%property{LogFileName}.log"/>
 <appendToFile value="true" />
 <rollingStyle value="Date" />
 <datePattern value="yyyy_MM_dd" />
 <staticLogFileName value="false" />
 <preserveLogFileNameExtension value="true"/>
 <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
 <layout type="log4net.Layout.PatternLayout">
 <conversionPattern value="%date{dd.MM.yyyy HH:mm:ss} - %message%newline" />
 </layout>
 </appender>

 var fileName = string.Format("Log_{0}_[{1}]_Build_",   
 DateTime.Now.ToString("yyyy_MM_dd"), DateTime.Now.ToString("HH.mm.ss")); // 
 GlobalContext.Properties["LogFileName"] = fileName;
 log4net.Config.XmlConfigurator.Configure();

感谢所有帮助.... :)

【问题讨论】:

    标签: multithreading parallel-processing log4net mpi log4net-configuration


    【解决方案1】:

    您正在使用最小锁。

    尝试:

    <lockingModel type="log4net.Appender.FileAppender+InterProcessLock" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      相关资源
      最近更新 更多