从共享 log4net.config 文件创建两个日志文件



我有两个控制台应用程序,它们在同一解决方案中共享通用的 app.config 和 log4.net 文件。 第一个控制台应用调用第二个控制台应用,但需要写入每个应用程序的不同日志文件。 两个应用程序共享相同的二进制文件夹。

我的 log4.net 文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="SchedulerService" type="log4net.Appender.RollingFileAppender">
    <file value="c:\logs\MailChimp\Scheduler.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <header value="[--------------------------------------------------]&#13;&#10;" />
      <footer value="&#13;&#10;" />
      <conversionPattern value="%-5level %date [%thread] %logger  
                  %message%newline" />
    </layout>
    <filter type="log4net.Filter.LoggerMatchFilter">
      <acceptOnMatch value="true" />
      <!-- set your class name here -->
      <LoggerToMatch value="MailChimp.MailingPlan" />
    </filter>
    <!--  <filter type="log4net.Filter.DenyAllFilter" /> -->
  </appender>
  <appender name="MailChimp" type="log4net.Appender.RollingFileAppender">
    <file value="c:\logs\MailChimp\MailChimpUploader.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <header value="[--------------------------------------------------]&#13;&#10;" />
      <footer value="&#13;&#10;" />
      <conversionPattern value="%-5level %date [%thread] %logger  
                  %message%newline" />
    </layout>
    <filter type="log4net.Filter.LoggerMatchFilter">
      <acceptOnMatch value="true" />
      <!-- set your class name here -->
      <LoggerToMatch value="MailChimp.MailChimpUploader" />
    </filter>
    <!--<filter type="log4net.Filter.DenyAllFilter" /> -->
  </appender>

  <!-- Set the default logging level and add the active appenders -->
   <root>
    <level value="ALL" />
    <appender-ref ref="SchedulerService" />
    <appender-ref ref="MailChimp" /> 
  </root>   
</log4net>

只有一个日志文件被写入,显然一个日志记录进程正在锁定另一个日志文件,因为 Log4Net 正在生成以下错误:

log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. 
      Unable to acquire lock on file 
      c:logsMailChimpMailChimpUploader.txt. 
      The process cannot access the file 
      'c:logsMailChimpMailChimpUploader.txt' 
      because it is being used by another process.

我可以将这些应用程序合并到一个应用程序中,但我宁愿不这样做。 关于如何同时从两个应用程序成功登录的任何建议将不胜感激。

谢谢。

根据 http://logging.apache.org/log4net/release/faq.html,在如何让多个进程记录到同一个文件部分下?

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

最新更新