2016-07-27 17 views
1

私はAzureにApplication Insightsリソースを持っています。 Javaアプリケーションでは、サービス名に応じて複数のログファイルに書き込むlog4j.xmlファイルがあります。Application Insightsログファイル名によるLog4jフィルタ

私はApplication Insightsアペンダーをロギングに追加しています。アプリケーションのInsightsリソースには、さまざまなログファイルのすべてのログが表示されます。しかし、私はApplication Insightsのログファイル名でフィルタリングすることができないので、トレースログは役に立ちません。

ロギングイベントプロパティにログファイル名を取得する方法はありますか?このように、AppInsightsでは、ログファイル名でフィルタリングし、そこにログファイルがあるかのように読み込むことができます。

編集: 私たちのlog4j.xmlがアプリケーション洞察

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
<appender name="fileout" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="datePattern" value="'.'yyyyMMdd"/> 
    <param name="file" value="${app.install.home}/log/${app.server.name}-${app.service.process.host}.log"/> 
    <param name="append" value="true"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %5p [%t] (%C) - %m%n"/> 
    </layout> 
</appender> 
<appender name="aiAppender" 
    class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender"> 
</appender>  
<root> 
    <priority value ="INFO" /> 
    <appender-ref ref="fileout"/> 
    <appender-ref ref="aiAppender" /> 
</root> 

+0

ログファイルを生成するためのファイルアペンダのいくつかの種類を使用していますか?そうであれば、アペンダーは他のアペンダーを認識せず、イベントが属するファイルをAIアペンダーに伝える簡単な方法はありません。 それにもかかわらず、マシン名である 'device_Id'プロパティでグループ化できます。 – yonisha

+0

@yonisha log4j.xmlの例の編集を参照してください。 DailyRollingFileAppenderを使用しています。すべてのサービスが同じマシン上にあるため、device_Idフィルタは役に立ちません。 – user1097108

答えて

0

のためにそれにaiAppenderで、次のようになりますあなたは、テレメトリプロパティにサービス名を追加するTelemetryInitializerを実装することができますグループ化に使用できます。

あなたのテレメトリ初期化子は、次のようになります。条件を除去することができることを

public class ServiceNameInitializer implements TelemetryInitializer { 
    @Override 
    public void initialize(Telemetry telemetry) { 
     if (telemetry instanceof TraceTelemetry) { 
      telemetry.getProperties().put("ServiceName", ServiceNameFromConfigurationOrProcessName); 
     } 
    } 
} 

注 - これは、すべてのテレメトリタイプにプロパティを追加します。

あなたは要素TelemetryInitializers内、configuration fileに追加し、初期化子を実装したら:

<TelemetryInitializers> 
    . 
    . 
    <Add type="your.initializer.package.ServiceNameInitializer"/> 
</TelemetryInitializers> 
+0

それはまさに私たちが必要としていたものです!提案通りに簡単に作業。ありがとうございました! – user1097108

関連する問題