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)]
Можете ли вы убедиться, что он указан в вашем проекте, и попробовать еще раз?