Application Insights Log4j按日志文件名

时间:2016-07-27 17:59:33

标签: java azure log4j azure-application-insights

我在Azure中获得了一个Application Insights资源。在我们的Java应用程序中,我们有一个log4j.xml文件,该文件根据服务名称写入多个日志文件。

我将Application Insights appender添加到日志记录中,并且我能够在Application Insights资源中查看不同日志文件的所有日志。但是,我无法按Application Insights中的日志文件名进行过滤,因此跟踪日志无用。

有没有办法将日志文件名称添加到日志记录事件属性中?这样,在AppInsights中,我们可以按日志文件名进行过滤,并将其读取,就像我们在那里有日志文件一样。

编辑: 我们的log4j.xml看起来像这样,其中有aiAppender用于应用程序洞察

<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>

1 个答案:

答案 0 :(得分:0)

您可以实施TelemetryInitializer将服务名称添加到遥测属性中,该属性可用于分组。

您的遥测初始化程序应如下所示:

substitution

请注意,可以删除条件 - 这会将属性添加到所有遥测类型。

一旦您实施了初始化程序,请将其添加到 TelemetryInitializers 元素内的configuration file

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