Log4netトレースをAzure Application Insightsに送信するようにAzure asp.net Webサイトを構成しようとしています。 Azureコンソールのページビューなどで確認できるので、問題なく動作していることがわかります。また、ファイルハンドラーを使用して構成された場合、log4netトレースを表示できますが、アプリケーションインサイトハンドラーを使用するようにlog4netを構成すると、アプリケーションインサイトダッシュボードにlog4netエントリが表示されず、ビルドまたは実行時にエラーまたは警告が表示されません-ただダッシュボードに結果はありません。 Fiddlerでネットワークトラフィックを確認しましたが、ページビューデータなどがアプリケーションインサイトに送信されているのを確認できましたが、log4netトレーストラフィックは確認できなかったため、これは構成の問題であると思われます。
別に、メインプロジェクトでTelemetryClient()を試してみましたが、ダッシュボードにトレーストラフィックが正常に表示されています。ただし、TelemetryClientはまだasp.net以外のdllをサポートしていないようです(つまり、別個のdllにあるビジネスとデータロジック)。
誰でも洞察やアドバイスを提供していますか?
Microsoft.ApplicationInsights.Log4NetAppender.dllのnugetパッケージをインストールし、Microsoft.ApplicationInsights.0.13.2-build00132を使用しています
https://blog.ehn.nu/2014/11/using-log4net-for-application-insights/ に従ってweb.configに次のものがあります
<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>
Log4Net Appender のPreReleaseバージョンをインストールしてみてください。
私は他の誰かが作成した手順 に従ってASP.NET MVCの標準的な例を作成しましたが 、上記と同じ問題がありました。しかし、その後、Application Insightsのドキュメントに記載されたいくつかの手順 に従って 、log4netアペンダーのPreReleaseパッケージのインストールが指定されていることを発見しました。それがうまくいったことをやった:)
また、Log4NetログをSitecore WebサイトのAIに送信する際に問題が発生しました。 SitecoreにはLog4Netの独自の実装があるため、AI Nugetパッケージでは機能しませんでした。ログをAIに送信する独自のApprenderを作成しました。
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の構成は正しいです。私はテストWebサイトでそれを使用しましたが、うまくいきました。また、Fiddlerには他のAIデータが表示されているため、AIも適切に構成されています。そのような場合に探すべきことの1つは、log4net.Config.XmlConfigurator属性です。これはアセンブリレベルの属性であり、log4net構成を適切に読み取るために必要な場合があります。
[Assembly: log4net.Config.XmlConfigurator(Watch = true)]
プロジェクトで指定されていることを確認して、もう一度試してください。
私の場合(既存のWebアプリケーションに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>
...