【问题标题】:Log4net AdoNetAppender conflict with RollingFileAppender causing duplicate filesLog4net AdoNetAppender 与 RollingFileAppender 冲突导致重复文件
【发布时间】:2022-05-03 19:16:12
【问题描述】:

我们在 IIS 中的 ASP.NET MVC Web 应用程序下运行 WebAPI 项目。我们基本上在 WebAPI 中使用 log4net 将信息记录到文本文件(使用 rollingfileappender),在 ASP.NET MVC 应用程序中,我们使用 AdoNetAppender 在数据库中记录所有需要的内容。我们正在观察创建的重复日志文件,例如FULL_December_26_2014.logFULL_December_26_2014.logFULL_December_26_2014.log 不应该这样,因为我们托管在单个 IIS 上,应用程序允许单个工作进程。我们在 RollingFileAppender 的两个实例中都看到了这个问题,即一个用于 Full,另一个用于 Summary。

这是一些配置 - 为简洁起见,删除了 AdoNetAppender 的参数部分:

<log4net debug="true">
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="Data Source=DS;Initial Catalog=IC;Persist Security Info=True;User ID=UI;Password=*******;MultipleActiveResultSets=True" />
      <commandText value="INSERT INTO Log ([Date],[Level],[Logger],[User],[Message],[Exception],[DSSessionID],[LocationID], [UserID], [Method], [Status]) VALUES (@log_date, @log_level, @logger, @user, @message, @exception,@DSSessionID, @LocationID, @UserID, @Method, @Status)" />
    </appender>
  <appender name="Full" type="log4net.Appender.RollingFileAppender">
      <file value="F:\logs\Dev3\" />
      <rollingStyle value="Date"/>
      <datePattern value="'EpicBPA_FULL_'MMMM_dd_yyyy'.log'"/>
      <appendToFile value="true" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date - %message%newline" />
      </layout>
    </appender>
      <appender name="Summary" type="log4net.Appender.RollingFileAppender">
        <file value="F:\logs\Dev3\" />
        <rollingStyle value="Date" />
        <datePattern value="'SUMMARY_'MMMM_dd_yyyy'.log'"/>
        <appendToFile value="true" />
        <maxSizeRollBackups value="5" />
        <maximumFileSize value="10MB" />
        <staticLogFileName value="false" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date{dd MMM yyyy HH:mm:ss}  - %message%newline" />
        </layout>
    </appender>
    <root>
      <priority value="ALL" />
      <level value="DEBUG" />
      <appender-ref ref="AdoNetAppender" />
    <appender-ref ref="Full" />
    </root>
    <category name="my.category">
      <priority value="DEBUG" />
    </category>
  <logger additivity="false" name="Summary">
          <level value="DEBUG"/>
          <appender-ref ref="Summary" />
      </logger>
  </log4net>

谁能指导我它有什么问题?当发生任何错误或异常时,似乎 AdoNetAppender(负责登录 MVC 应用程序)会写入 RollingFileAppender 的文件。但为什么?

【问题讨论】:

  • 您确定是 AdoNetAppender 导致了问题吗?您是否尝试过禁用 AdoNetAppender 并查看问题是否仍然存在?我正在考虑锁定问题(请参阅:stackoverflow.com/questions/1999382/…)。
  • 谢谢。我从根部分删除了“”,但仍然面临这个问题,所以可能与 AdoNetAppender 和 RollingFileAppender 之间的冲突无关。
  • 我没有遇到任何权限/锁定问题。 RollingFileAppender 正在写入日志文件,因此 AdoNetAppender 在日志表中插入数据。问题是,我得到了问题中提到的单个日期的重复文件,但我无法弄清楚原因。

标签: asp.net-mvc asp.net-web-api log4net log4net-configuration


【解决方案1】:

您的文件正在用于其他进程,这是原因,请确认您没有复制 log4net 实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多