2017-07-04 22 views
1

私は自分のC#コンソールアプリケーションでLog4Netを使用しており、ログに記録されたイベントをApplication Insightでも表示したいと考えています。Log4Netとアプリケーションの洞察 - データが届かない

私はApplication InsightsとApplication Insights Log4Net Appenderを追加しました。

私はここの指示に従っています:https://jan-v.nl/post/using-application-insights-in-your-log4net-application運がありません。

Log4Netは正常にログを記録しています。しかし、私がApplication Insightsダッシュボードにアクセスすると、「アプリケーションにはアプリケーションに関する情報がない」というメッセージが表示されます。私のメインのCSファイルの先頭に

が、私はこれ持っている:最後に

var telemetryClient = new TelemetryClient { InstrumentationKey = ConfigurationManager.AppSettings["applicationInsights"] }; 

を、これがあります:私のapp.configファイルで

telemetryClient.Flush(); 

、私が持っていますこの:私は、アプリケーションを実行すると、私は出力ウィンドウにこの種のものを参照してください

<log4net> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
     <appender-ref ref="aiAppender" /> 
    </root> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="C:\logs\logfile.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message%newline" /> 
     </layout> 
    </appender> 
    </log4net> 

Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Message","time":"2017-07-04T10:26:15.7741453Z","tags":{"ai.internal.sdkVersion":"log4net:2.2.0-220","ai.cloud.roleInstance":"xxx","ai.user.id":"AzureAD\\xxx"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"xxx","severityLevel":"Information","properties":{xxx"}}}} 

何が欠けていますか?

+1

はapp.configをでAIの計装キーですか? –

+0

はい、そうです。 *フィラーの文字はここにある* –

答えて

1

Log4Net AI appenderは、作成したTelemtryClientを使用しません。

このような設定AI計装キー:

TelemetryConfiguration.Active.InstrumentationKey = ConfigurationManager.AppSettings["applicationInsights"]; 

を参照してください、https://github.com/Microsoft/ApplicationInsights-dotnet-logging

+0

素晴らしい、これは動作します! 理由を説明できますか? –

+0

ロギングパッケージはあなたの 'TelemetryClient'インスタンスについて何も知らないので。 1つのアプリケーション(またはWebサイトなど)が異なるikeysに異なる種類のテレメトリーを送信することは完全に可能です。そのため、あなたのコードが知っている唯一のものである「プライベート」テレメトリクライアントを作成しましたその特定のikey。ロギングのものは、 'TelemetryConfiguration.Active'の共有構成を使用してその共通の場所にデータを送信します。 –

関連する問題