2017-10-19 123 views
3

我在Azure中有一個使用Logback進行跟蹤日誌記錄的Java web應用程序。我試圖將跟蹤日誌記錄鏈接到Azure中的Application Insights,並且我遵循了Azure documentation中的所有操作說明。將Logback跟蹤日誌發送到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> 

我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可以很好地與控制檯appender配合使用,遙測應用程序見解的工作正常,但跟蹤日誌不會使它進入應用程序洞察門戶。我收到以下錯誤:

AI: ERROR 18-10-2017 20:40, 19: Failed to send, Bad request : {"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] - Could NOT find resource [logback.groovy]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/greta/OneDrive/Eclipse%20Water%20Application%20Project%20Files/Test2/target/classes/logback.xml]
09:13:59,888 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
09:13:59,891 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
09:13:59,911 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:13:59,943 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender]
09:13:59,988 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [aiAppender]
AI: INFO 20-10-2017 09:14, 1: Configuration file has been successfully found as resource
AI: INFO 20-10-2017 09:14, 1: 'MaxTelemetryBufferCapacity': null value is replaced with '500'
AI: INFO 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': null value is replaced with '5'
AI: TRACE 20-10-2017 09:14, 1: Using Http Client version 4.3+
AI: INFO 20-10-2017 09:14, 1: 'Channel.MaxTransmissionStorageCapacityInMB': null value is replaced with '10'
AI: TRACE 20-10-2017 09:14, 1: C:\Users\greta\AppData\Local\Temp\AISDK\native\1.0.10 folder exists
AI: TRACE 20-10-2017 09:14, 1: Java process name is set to 'javaw'
AI: TRACE 20-10-2017 09:14, 1: Successfully loaded library 'applicationinsights-core-native-win64.dll'
AI: INFO 20-10-2017 09:14, 1: Configuration file has been successfully found as resource
AI: INFO 20-10-2017 09:14, 1: 'MaxTelemetryBufferCapacity': null value is replaced with '500'
AI: INFO 20-10-2017 09:14, 1: 'FlushIntervalInSeconds': null value is replaced with '5'
AI: INFO 20-10-2017 09:14, 1: 'Channel.MaxTransmissionStorageCapacityInMB': null value is replaced with '10'
AI: TRACE 20-10-2017 09:14, 1: C:\Users\greta\AppData\Local\Temp\AISDK\native\1.0.10 folder exists
AI: TRACE 20-10-2017 09:14, 1: Java process name is set to 'javaw'
AI: TRACE 20-10-2017 09:14, 1: Successfully loaded library 'applicationinsights-core-native-win64.dll'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'DeadLockDetector'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JSDK_WindowsPerformanceCounterAsPC'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'DeadLockDetector'
AI: TRACE 20-10-2017 09:14, 1: Failed to store performance counter 'DeadLockDetector', since there is already one
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JvmHeapMemoryUsedPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Failed to store performance counter 'JvmHeapMemoryUsedPerformanceCounter', since there is already one
AI: ERROR 20-10-2017 09:14, 1: Failed to create WindowsPerformanceCounterAsPC: 'Failed to register all built-in Windows performance counters.'
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JSDK_ProcessMemoryPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Failed to store performance counter 'JSDK_ProcessMemoryPerformanceCounter', since there is already one
AI: TRACE 20-10-2017 09:14, 1: Registering PC 'JSDK_ProcessCpuPerformanceCounter'
AI: TRACE 20-10-2017 09:14, 1: Failed to store performance counter 'JSDK_ProcessCpuPerformanceCounter', since there is already one
09:14:01,943 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
09:14:01,943 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
09:14:01,944 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [aiAppender] to Logger[ROOT]
09:14:01,944 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
09:14:01,945 |-INFO in [email protected] - Registering current configuration as safe fallback point
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
09:13:59,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/greta/OneDrive/Eclipse%20Water%20Application%20Project%20Files/Test2/target/classes/logback.xml]
09:13:59,888 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
09:13:59,891 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
09:13:59,911 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:13:59,943 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.microsoft.applicationinsights.logback.ApplicationInsightsAppender]
09:13:59,988 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [aiAppender]
09:14:01,943 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
09:14:01,943 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
09:14:01,944 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [aiAppender] to Logger[ROOT]
09:14:01,944 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
09:14:01,945 |-INFO in [email protected] - Registering current configuration as safe fallback point
09:14:01.948 INFO - Logging is working
AI: TRACE 20-10-2017 09:14, 1: InProcessTelemetryChannel sending telemetry
AI: TRACE 20-10-2017 09:14, 1: InProcessTelemetryChannel sending telemetry
Hello World!
AI: ERROR 20-10-2017 09:14, 19: Failed to send, Bad request : {"itemsReceived":1,"itemsAccepted":0,"errors":[{"index":0,"statusCode":400,"message":"SyntaxError: Unexpected token I"}]}

沒有與性能計數器相關的一些錯誤。我試圖找到這些錯誤的一些信息,但沒有太多的運氣。也許這是問題的一部分?

+0

我厭倦了重現您的問題。test.class在本地工作正常嗎?請您發佈完整的跟蹤日誌嗎? –

+0

@JayGong,我添加了堆棧跟蹤作爲更新。感謝您的幫助! – Greta

回答

1

我在這裏可以看到的其中一個問題是AI的內部記錄器報告出乎意料的字符。我發現其中一個可能的問題是,在清理邏輯中存在一些問題,並且無法將項目發送到終點,因此您無法在門戶網站上看到數據。還有一些已知的logback問題已經在github上提到過: https://github.com/Microsoft/ApplicationInsights-Java/issues/453 這應該回答你的問題。如果您願意,可以隨時在Github上創建另一個問題。希望下一個公開發布應該解決這個問題。

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17697274) – daniele3004

+0

請不要添加「謝謝」作爲答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你就可以[提出問題和答案](https://stackoverflow.com/help/privileges/vote- )你發現有幫助。 - [來自評論](/ review/low-quality-posts/17697274) – user1155120

1

新版本的Application Insights Java SDK 2.0.0-BETA現已發佈。請嘗試將您的應用程序依賴關係更新到最新版本並嘗試。我相信這個問題已經解決了。除此之外,您還可以獲得許多最新功能和錯誤修復!

相關問題