Log4Net с пониманием приложений

Я пытаюсь настроить свой веб-сайт azure asp.net для отправки трассировок log4net в Azure Application Insights. Я могу видеть в своих Azure консоли просмотров страниц и т. Д., Следовательно, я знаю, что работает нормально. Я также вижу следы log4net при настройке с помощью обработчика файлов, но при настройке log4net для использования обработчика сведений о приложении я не вижу записей log4net на панели мониторинга сведений о приложении, ошибок или предупреждений во время сборки или выполнения - просто нет результатов в приборной панели. Я посмотрел на сетевой трафик в Fiddler и вижу, что данные просмотра страниц и т. Д. Отправляются в приложениях, но не трафик трассировки log4net, поэтому я подозреваю, что это проблема конфигурации.

Отдельно я пробовал TelemetryClient() в своем основном проекте, и я успешно вижу трассировку на панели инструментов. Тем не менее, это не соответствует моему варианту использования, так как TelemetryClient, кажется, пока не поддерживает не asp.net dll (т.е. моя логика бизнеса и данных, которые находятся в отдельных dll).

Кто-нибудь предлагает какие-либо идеи или советы?

Я установил пакет nuget для Microsoft.ApplicationInsights.Log4NetAppender.dll и использую Microsoft.ApplicationInsights.0.13.2-build00132.

У меня есть следующее в моем web.config согласно http://geekswithblogs.net/jakob/archive/2014/11/09/using-log4net-for-application-insights.aspx

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="aiAppender"/>
    </root>
    <appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message%newline"/>
      </layout>
    </appender>
  </log4net>
<configuration>

4 ответа

Попробуйте установить предварительную версию приложения Log4Net Appender.

Я создал канонический пример ASP.NET MVC, следуя инструкциям, созданным кем-то другим, и у меня была та же проблема, что и выше. Но затем последовал ряд шагов, описанных в документации Application Insights, и обнаружил, что в них указывается установка пакета PreRelease для приложения log4net. Сделав это, оно заработало:)

В моем случае (я добавил Application Insights в существующее веб-приложение), кроме Microsoft.ApplicationInsights.Log4NetAppender Я должен был добавить Microsoft.ApplicationInsights.Web пакет с использованием NuGet. После этого в созданном ApplicationInsights.config вам нужно указать свой InstrumentationKey.

Например, ApplicationInsights.config

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
  <InstrumentationKey>YOUR KEY HERE</InstrumentationKey>
  <TelemetryModules>
  ...

У меня также были некоторые проблемы с отправкой моих журналов Log4Net в AI на веб-сайте Sitecore. Sitecore имеет собственную реализацию Log4Net, поэтому он не работал с пакетом AI Nuget. Я сделал свой собственный Apprender, в котором я отправляю логи в AI.

 public class CustomLogFileAppender : SitecoreLogFileAppender
    {
        protected override void Append(LoggingEvent loggingEvent)
        {
            if (Sitecore.Context.Site != null )
            {

                if(loggingEvent.Level == Level.FATAL)
                {
                    AppsInsightsLogHelper.Critical(loggingEvent.RenderedMessage);
                }

                if (loggingEvent.Level == Level.ERROR)
                {
                    AppsInsightsLogHelper.Error(loggingEvent.RenderedMessage);
                }

                if (loggingEvent.Level == Level.WARN)
                {
                    AppsInsightsLogHelper.Warning(loggingEvent.RenderedMessage);
                }

                if(loggingEvent.Level == Level.INFO)
                {
                    AppsInsightsLogHelper.Info(loggingEvent.RenderedMessage);
                }


            }

                base.Append(loggingEvent);
        }
    }

В sitecore.config:

<log4net>
    <appender name="LogFileAppender" type="namespace.CustomLogFileAppender, dll name">
      ...
    </appender>
</log4net>

Ваша конфигурация log4net верна; Я использовал его на тестовом веб-сайте, и это сработало. Кроме того, поскольку вы видите другие данные AI в Fiddler, ваш AI также настроен правильно. В таких случаях нужно искать атрибут log4net.Config.XmlConfigurator. Это атрибут уровня сборки, и может потребоваться правильное чтение конфигурации log4net.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Можете ли вы убедиться, что он указан в вашем проекте, и попробовать еще раз?

Другие вопросы по тегам