【发布时间】:2022-05-03 19:16:12
【问题描述】:
我们在 IIS 中的 ASP.NET MVC Web 应用程序下运行 WebAPI 项目。我们基本上在 WebAPI 中使用 log4net 将信息记录到文本文件(使用 rollingfileappender),在 ASP.NET MVC 应用程序中,我们使用 AdoNetAppender 在数据库中记录所有需要的内容。我们正在观察创建的重复日志文件,例如FULL_December_26_2014.log 和 FULL_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