Gre*_*eta 6 java logback azure azure-application-insights
我在 Azure 中有一个 Java Web 应用程序,它使用 Logback 进行跟踪日志记录。我正在尝试将跟踪日志记录链接到 Azure 中的 Application Insights,并且我已按照Azure 文档中的所有说明进行操作。
这是 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>
Run Code Online (Sandbox Code Playgroud)
我的 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>
Run Code Online (Sandbox Code Playgroud)
我的 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>
Run Code Online (Sandbox Code Playgroud)
还有我测试记录器和应用程序洞察集成的课程:
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!" );
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,Logback 与控制台 appender 一起工作正常,应用程序洞察的遥测工作正常,但跟踪日志没有进入应用程序洞察门户。我收到以下错误:
AI:错误 18-10-2017 20:40、19:发送失败,错误请求:{"itemsReceived":1,"itemsAccepted":0,"errors":[{"index":0,"statusCode": 400,"message":"SyntaxError: Unexpected token I"}]}
我一直在寻找解决此问题的方法,但似乎无法解决。有没有人有任何想法?谢谢!!
更新:
这是完整的堆栈跟踪:
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - 找不到资源 [logback.groovy]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[默认] - 找不到资源 [logback-test.xml]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - 在 [file:/C: 找到资源 [logback.xml]: /Users/greta/OneDrive/Eclipse%20Water%20Application%20Project%20Files/Test2/target/classes/logback.xml]
09:13:59,888 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 -即将实例化 [ch.qos.logback.core.ConsoleAppender] 类型的 appender
09:13:59,891 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - 将 appender 命名为 [STDOUT]
09:13:59,911 |-ch.qos.logback.core.joran.action.NestedComplexPropertyIA 中的信息 - 假设 [编码器] 属性的默认类型 [ch.qos.logback.classic.encoder.PatternLayoutEncoder] AI: INFO 20-10-2017 09:14, 1: ' MaxTelemetryBufferCapacity':空值替换为 '500' AI:INFO 20-10-2017 09:14, 1:'FlushIntervalInSeconds':空值替换为 '5'
09:13:59,943 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化类型为 [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender] 的 appender
09:13:59,988 |-INFO in ch .qos.logback.core.joran.action.AppenderAction - 将 appender 命名为 [aiAppender]
AI:INFO 20-10-2017 09:14, 1:已成功找到配置文件作为资源 AI:TRACE 20-10-2017 09 :14, 1: Using Http Client version 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' :空值被替换为“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_WindowsPerformanceCounterAsPC' AI: TRACE 20-10-1090-2017 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 to create WindowsPerformanceCounter: : '未能注册所有内置的 Windows 性能计数器。'
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessCounterCpuPerformanceCpu
AI: TRACE 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器 'JSDK_ProcessMemoryPerformanceCounter',因为已经有一个
AI: 20-10-2017 09:14, 1: 注册 PC 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: 无法存储性能计数器 'JSDK_ProcessCpuPerformanceCounter',因为已经有一个
01,9430: | -ch.qos.logback.classic.joran.action.RootLoggerAction 中的信息 - 将 ROOT 记录器的级别设置为 INFO
09:14:01,943 | - ch.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 附加名为 appender [标准输出] 到记录器 [ROOT]
09:14:01,944 | ch.qos.logback.core.joran.action.AppenderRefAction 中的-INFO - 将名为 [aiAppender] 的 appender 附加到 Logger[ROOT]
09:14:01,944 |-ch.qos.logback.classic.joran.action.ConfigurationAction 中的信息 - 配置结束。
09:14:01,945 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6b415f5f - 将当前配置注册为安全回退点
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] ] - 找不到资源 [logback.groovy]
09:13:59,774 |-INFO in 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%20Files/Test2/target 找到资源 [logback.xml] /classes/logback.xml]
09:13:59,888 |-ch.qos.logback.core.joran.action.AppenderAction 中的信息 - 即将实例化 [ch.qos.logback.core.ConsoleAppender] 类型的 appender
09:13:59,891 |-INFO in ch .qos.logback.core.joran.action.AppenderAction - 将 appender 命名为 [STDOUT]
09:13:59,911 |-ch.qos.logback.core.joran.action.NestedComplexPropertyIA 中的信息 - 假设默认类型 [ch.qos. logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:13:59,943 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - 即将实例化 [com.microsoft.applicationinsights.logback 类型的 appender .ApplicationInsightsAppender]
09:13:59,988 |-CH.qos.logback.core.joran.action.AppenderAction 中的信息 - 将 appender 命名为 [aiAppender]
09:14:01,943 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - 将 ROOT 记录器的级别设置为 INFO
09:14:01,943 |-INFO in ch.qos.logback.core.joran.action .AppenderRefAction - 将名为 [STDOUT] 的 appender 附加到 Logger[ROOT]
09:14:01,944 |-CH.qos.logback.core.joran.action.AppenderRefAction 中的信息 - 将名为 [aiAppender] 的 appender 附加到 Logger[ROOT]
09: 14:01,944 |-ch.qos.logback.classic.joran.action.ConfigurationAction 中的信息 - 配置结束。 09:14:01.948 信息 - 日志正在工作 AI:TRACE 20-10-2017 09: 14、1:InProcessTelemetryChannel发送遥测
09:14:01,945 |-ch.qos.logback.classic.joran.JoranConfigurator@6b415f5f 中的信息 - 将当前配置注册为安全回退点 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"}]}
有一些与性能计数器相关的错误。我尝试查找有关这些错误的一些信息,但运气不佳。也许这是问题的一部分?
我在这里看到的问题之一是人工智能的内部记录器正在报告意外的字符。我发现可能的问题之一是清理逻辑中存在一些问题,导致项目无法发送到端点,因此您无法在门户上看到数据。另外,github 上已经提到了一些已知的 logback 问题: https://github.com/Microsoft/ApplicationInsights-Java/issues/453 这应该可以回答您的问题。如果您愿意,请随时在 Github 上创建另一个问题。希望下一个公开版本能够解决这个问题。
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |