我在单个服务器上运行 WCF 服务,使用 Log4net 通过 INFO 和 WARN 级别的日志条目跟踪使用情况。使用具有以下非常标准配置的 RollingFileAppender:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="\\mylocation\data\PRD\myApp\MyService"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="-yyyy-MM-dd'.log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="ADONetAppender_SqlServer" />
</root>
我还使用了 ADONetAppender,它接收重定向的“WARN”级数据并通过存储过程将其写入 SQL 服务器中的数据库表。这个配置有点长,所以为了可读性我省略了它。
我在我们的开发和 TST 环境中有这个设置,它运行良好。在 PRD 环境下,似乎会生成重复的日志文件。第一个是根据我指定的模式命名的,即“logfile-yyyy-mm-dd.log”。第二个文件看起来像第一个文件的补充,日期模式重复,即“logfile-yyyy-mm-dd.log.-yyyy-mm-dd.log”。
更有趣的是,两个文件中包含的条目按时间重叠。文件 1 可能包含上午 8 点到上午 12 点的条目,文件 2 也将包含同一时间段的条目。这些条目不是重复的,它们是由服务的不同用户生成的。文件 1 和 2 的副本几乎可以是任意大小,因此这不是达到大小或日期/时间阈值并生成下一个所需日志文件的问题。
DB 表条目包含所有预期的行,其中一些包含在每个日志文件中。这些行仅由 WARN 级别的日志记录生成,并且一些 WARNing 出现在每个日志文件中。
我已经从我们商店的一些 log4net 精明的人那里得到了这个反馈,但是没有人知道可能导致这种重复文件行为的原因。来自 Stackland 的任何想法表示赞赏。