33

Azure Application Insights に log4net トレースを送信するように Azure asp.net Web サイトを構成しようとしています。Azure コンソールのページ ビューなどで確認できるため、正常に動作していることがわかります。ファイル ハンドラーで構成すると log4net トレースも表示されますが、アプリケーション インサイト ハンドラーを使用するように log4net を構成すると、アプリケーション インサイト ダッシュボードに log4net エントリが表示されず、ビルド時または実行時にエラーや警告が表示されません。ダッシュボードに結果がありません。Fiddler でネットワーク トラフィックを調べたところ、ページビュー データなどがアプリケーション インサイトに送信されていることがわかりますが、log4net トレース トラフィックは確認できないため、これは構成の問題であると思われます。

これとは別に、メイン プロジェクトで TelemetryClient() を試してみましたが、ダッシュボードに tracetraffic が正常に表示されます。ただし、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>
4

4 に答える 4

4

Log4Net Appenderの PreRelease バージョンをインストールしてみてください。

他の誰かが作成した手順に従って正規の ASP.NET MVC の例を作成しましたが、上記と同じ問題がありました。しかしその後、Application Insights のドキュメントに書かれているいくつかの手順に従い、log4net アペンダー用の PreRelease パッケージのインストールを指定していることを発見しました。それがうまくいったことをした:)

于 2015-05-07T07:56:22.767 に答える
3

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>
于 2016-05-24T13:22:39.080 に答える
2

私の場合 (既存の Web アプリケーションに Application Insights を追加しました)、NuGet を使用してパッケージをMicrosoft.ApplicationInsights.Log4NetAppender追加する必要がありました。Microsoft.ApplicationInsights.Webその後、作成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>
  ...
于 2015-11-05T12:53:28.843 に答える