Дублирующиеся записи Log4net, когда используется только один (корневой) регистратор

Моя конфигурация 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(сообщение); только один раз, но у меня в логах все ошибки дублируются. Кроме того, этот метод вызывается в классе контроллера для проекта WebApi.

Я читал в других вопросах, что это может произойти при использовании нескольких регистраторов и их распространении сообщений до корневого регистратора, однако в этом случае я использую только корневой регистратор.


person Adam Nygate    schedule 08.12.2016    source источник
comment
Я также пытался удалить регистратор Amazon, но это не помогло.   -  person Adam Nygate    schedule 08.12.2016
comment
Являются ли повторяющиеся записи журнала одинаковыми с точностью до миллисекунды? Или код вашего приложения может непреднамеренно регистрироваться дважды?   -  person Andy Lamb    schedule 08.12.2016
comment
Они точно такие же, одинаковое время до миллисекунды, потока и т. Д.   -  person Adam Nygate    schedule 08.12.2016
comment
Я удалил теги visual-studio и amazon-cloudwatchlogs, так как вопрос их не касается.   -  person    schedule 08.12.2016
comment
Попробуйте заглянуть в log4net.LogManager.GetRepository().GetAppenders() и посмотреть, что возвращается   -  person Kevin Smith    schedule 11.12.2016
comment
@KevinSmith, это вернуло 2 идентичных приложения, хотя в моем файле конфигурации XML указан только один.   -  person Adam Nygate    schedule 11.12.2016


Ответы (1)


Похоже, проблема заключалась в конкретной конфигурации AWS SDK:

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

Каким-то образом это дублировало приложения и вызывало двойные сообщения.

Чтобы это исправить, просто удалите этот параметр или измените значение на «none».

person Adam Nygate    schedule 11.12.2016