【问题标题】:Log4net duplicate entries when only one (root) logger is used仅使用一个(根)记录器时的 Log4net 重复条目
【发布时间】:2016-12-08 17:10:45
【问题描述】:

我的 log4net 配置如下所示:

<log4net>
 <appender name="CloudWatchLogsAppender" type="CloudWatchAppender.CloudWatchLogsAppender, CloudWatchAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger.%method - %message%newline" />
  </layout>
  <groupName value="agroupname" />
  <streamName value="astreamname" />
 </appender>
 <root>
  <level value="INFO" />
  <appender-ref ref="CloudWatchLogsAppender" />
 </root>
 <logger name="Amazon">
  <level value="OFF" />
 </logger>
</log4net>

在类中,我用

实例化记录器
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

并调用 Log.Error(message);只有一次,但在我的日志中,所有错误都是重复的。此外,此方法正在 WebApi 项目的控制器类中调用。

我在其他问题中读到,当使用多个记录器并且它们将消息传播到根记录器时可能会发生这种情况,但是,在这种情况下我只使用根记录器。

【问题讨论】:

  • 我也试过删除那里的亚马逊记录器,但没有任何区别。
  • 重复的日志条目是否完全相同,精确到毫秒?或者您的应用程序代码是否会无意中记录两次?
  • 它们完全相同,毫秒和线程等时间相同。
  • 我已经删除了visual-studioamazon-cloudwatchlogs 标签,因为这个问题也不涉及。
  • 尝试查看log4net.LogManager.GetRepository().GetAppenders() 并查看返回的内容

标签: c# log4net log4net-configuration amazon-cloudwatchlogs


【解决方案1】:

问题似乎是 AWS 开发工具包特定的配置:

     <add key="AWSLogging" value="log4net" />

不知何故,这复制了附加程序并导致了双重消息。

要修复,只需删除此设置或将值更改为“无”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2023-03-05
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多