【发布时间】:2018-03-31 01:33:55
【问题描述】:
我在 Azure 中有一个 Java Web 应用程序,它使用 Logback 进行跟踪日志记录。我正在尝试将跟踪日志记录链接到 Azure 中的 Application Insights,并且我已按照 Azure documentation 中的所有说明进行操作。
这里是 Maven pom.xml 的相关部分:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web</artifactId>
<version>[1.0,)</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>[1.0,)</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[1.0,)</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>central</id>
<name>Central</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
我的 ApplicationInsights.xml:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE xml>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<SDKLogger />
<InstrumentationKey>*my key here*</InstrumentationKey>
<ContextInitializers>
</ContextInitializers>
<TelemetryInitializers>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
</TelemetryInitializers>
<TelemetryModules>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
</TelemetryModules>
<Channel>
<!--
Setting DeveloperMode to true will enable immediate transmission of the telemetry events, which can be helpful during the development process.
Make sure to turn this off on production servers due to performance considerations.
-->
<DeveloperMode>true</DeveloperMode>
</Channel>
<DisableTelemetry>false</DisableTelemetry>
</ApplicationInsights>
我的 logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration debug = "true">
<appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT">
<encoder>
<Pattern>%d{HH:mm:ss.SSS} %-5level - %msg%n</Pattern>
</encoder>
</appender>
<appender name="aiAppender" class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="aiAppender"/>
</root>
</configuration>
还有我测试记录器和应用程序洞察集成的课程:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.microsoft.applicationinsights.TelemetryClient;
/**
* Hello world!
*
*/
public class App
{
private final static Logger LOG = LoggerFactory.getLogger("root");
public static void main( String[] args ) throws InterruptedException
{
LOG.info("Logging is working");
TelemetryClient tc = new TelemetryClient();
tc.trackTrace("Telemetry is working");
System.out.println( "Hello World!" );
}
}
当我运行此程序时,Logback 与控制台附加程序正常工作,应用程序洞察力的遥测工作正常,但跟踪日志无法进入应用程序洞察力门户。我收到以下错误:
AI: ERROR 18-10-2017 20:40, 19: 发送失败,错误请求: {"itemsReceived":1,"itemsAccepted":0,"errors":[{"index":0,"statusCode":400,"message":"SyntaxError: 意外的令牌 I"}]}
我已经到处寻找解决这个问题的方法,但我似乎无法解决。有没有人有任何想法?谢谢!!
更新:
这是完整的堆栈跟踪:
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 找不到资源 [logback.groovy]
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 找不到资源 [logback-test.xml]
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 在 [file:/C:/Users/greta/OneDrive/Eclipse%20Water%20Application%20Project 找到资源 [logback.xml] %20Files/Test2/target/classes/logback.xml]
09:13:59,888 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化 [ch.qos.logback.core.ConsoleAppender] 类型的附加程序
09:13:59,891 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 将附加程序命名为 [STDOUT]
09:13:59,911 |-ch.qos.logback.core.joran.action.NestedComplexPropertyIA 中的信息 - 假设 [encoder] 属性的默认类型 [ch.qos.logback.classic.encoder.PatternLayoutEncoder]
09:13:59,943 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化 [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender] 类型的附加程序
09:13:59,988 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 将附加程序命名为 [aiAppender]
AI: INFO 20-10-2017 09:14, 1: 配置文件已成功找到资源
AI:INFO 20-10-2017 09:14,1:“MaxTelemetryBufferCapacity”:空值替换为“500”
AI: INFO 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': null 值替换为 '5'
AI: TRACE 20-10-2017 09:14, 1: 使用 Http Client 版本 4.3+
AI:INFO 20-10-2017 09:14,1:“Channel.MaxTransmissionStorageCapacityInMB”:空值替换为“10”
AI: TRACE 20-10-2017 09:14, 1: C:\Users\greta\AppData\Local\Temp\AISDK\native\1.0.10 文件夹存在
AI:TRACE 20-10-2017 09:14,1:Java 进程名称设置为“javaw”
AI: TRACE 20-10-2017 09:14, 1: 成功加载库 'applicationinsights-core-native-win64.dll'
AI: INFO 20-10-2017 09:14, 1: 配置文件已成功找到资源
AI:INFO 20-10-2017 09:14,1:“MaxTelemetryBufferCapacity”:空值替换为“500”
AI: INFO 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': null 值替换为 '5'
AI:INFO 20-10-2017 09:14,1:“Channel.MaxTransmissionStorageCapacityInMB”:空值替换为“10”
AI: TRACE 20-10-2017 09:14, 1: C:\Users\greta\AppData\Local\Temp\AISDK\native\1.0.10 文件夹存在
AI:TRACE 20-10-2017 09:14,1:Java 进程名称设置为“javaw”
AI: TRACE 20-10-2017 09:14, 1: 成功加载库 'applicationinsights-core-native-win64.dll'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'DeadLockDetector'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_WindowsPerformanceCounterAsPC'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'DeadLockDetector'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器“DeadLockDetector”,因为已经有一个
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器“JvmHeapMemoryUsedPerformanceCounter”,因为已经有一个
AI: ERROR 20-10-2017 09:14, 1: 无法创建 WindowsPerformanceCounterAsPC: '无法注册所有内置 Windows 性能计数器。'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器“JSDK_ProcessMemoryPerformanceCounter”,因为已经有一个
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器“JSDK_ProcessCpuPerformanceCounter”,因为已经有一个
09:14:01,943 |-CH.qos.logback.classic.joran.action.RootLoggerAction 中的信息 - 将 ROOT 记录器的级别设置为信息
09:14:01,943 |-ch.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 将名为 [STDOUT] 的附加程序附加到记录器 [ROOT]
09:14:01,944 |-ch.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 将名为 [aiAppender] 的附加程序附加到 Logger[ROOT]
09:14:01,944 |-ch.qos.logback.classic.joran.action.ConfigurationAction 中的信息 - 配置结束。
09:14:01,945 |-ch.qos.logback.classic.joran.JoranConfigurator@6b415f5f 中的信息 - 将当前配置注册为安全后备点
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 找不到资源 [logback.groovy]
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 找不到资源 [logback-test.xml]
09:13:59,774 |-ch.qos.logback.classic.LoggerContext[default] 中的信息 - 在 [file:/C:/Users/greta/OneDrive/Eclipse%20Water%20Application%20Project 找到资源 [logback.xml] %20Files/Test2/target/classes/logback.xml]
09:13:59,888 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化 [ch.qos.logback.core.ConsoleAppender] 类型的附加程序
09:13:59,891 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 将附加程序命名为 [STDOUT]
09:13:59,911 |-ch.qos.logback.core.joran.action.NestedComplexPropertyIA 中的信息 - 假设 [encoder] 属性的默认类型 [ch.qos.logback.classic.encoder.PatternLayoutEncoder]
09:13:59,943 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化 [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender] 类型的附加程序
09:13:59,988 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 将附加程序命名为 [aiAppender]
09:14:01,943 |-CH.qos.logback.classic.joran.action.RootLoggerAction 中的信息 - 将 ROOT 记录器的级别设置为信息
09:14:01,943 |-ch.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 将名为 [STDOUT] 的附加程序附加到记录器 [ROOT]
09:14:01,944 |-ch.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 将名为 [aiAppender] 的附加程序附加到 Logger[ROOT]
09:14:01,944 |-ch.qos.logback.classic.joran.action.ConfigurationAction 中的信息 - 配置结束。
09:14:01,945 |-ch.qos.logback.classic.joran.JoranConfigurator@6b415f5f 中的信息 - 将当前配置注册为安全后备点
09:14:01.948 信息 - 日志记录正常
AI: TRACE 20-10-2017 09:14, 1: InProcessTelemetryChannel 发送遥测
AI: TRACE 20-10-2017 09:14, 1: InProcessTelemetryChannel 发送遥测
世界你好!
AI:错误 20-10-2017 09:14、19:发送失败,错误请求:{"itemsReceived":1,"itemsAccepted":0,"errors":[{"index":0,"statusCode": 400,"message":"SyntaxError: Unexpected token I"}]}
有一些与性能计数器相关的错误。我尝试查找有关这些错误的一些信息,但运气不佳。也许这就是问题的一部分?
【问题讨论】:
-
我厌倦了重现您的问题。test.class 在本地运行良好?能否请您发布完整的跟踪日志?
-
@JayGong,我添加了堆栈跟踪作为更新。感谢您的帮助!
标签: java azure logback azure-application-insights