[Beta] Merge remote-tracking branch 'upstream/master' into beta (#2003)
This commit is contained in:
Коммит
0c49c108b2
|
@ -82,11 +82,11 @@ Parameter | Type | Description
|
|||
`error` | [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | **Required**<br>Error object
|
||||
`severityLevel?` | [SeverityLevel (number)](https://github.com/microsoft/ApplicationInsights-JS/blob/master/JavaScript/JavaScriptSDK.Interfaces/Contracts/Generated/SeverityLevel.ts) | **Optional**<br>Severity of the message, ranging from verbose to critical
|
||||
|
||||
By default, uncaught browser exceptions are caught by the SDK and reported to the portal. To disable this behavior, insert the following line in the config section below your instrumentation key:
|
||||
By default, uncaught browser exceptions are caught by the SDK and reported to the portal. To disable this behavior, insert the following line in the config section below your connection string:
|
||||
|
||||
```ts
|
||||
{
|
||||
instrumentationKey: "your instrumentation key",
|
||||
connectionString: "your connection string",
|
||||
disableExceptionTracking: true
|
||||
}
|
||||
```
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
Application Insights - Web Basic SDK
|
||||
|
||||
Application Insights AI SKU Light is a package that combines minimum required packages for Web scenarios.
|
||||
Refer to [ApplicationInsights-JS](../README.MD) for more details on getting started.
|
||||
Refer to [ApplicationInsights-JS](../README.md) for more details on getting started.
|
||||
|
||||
## Beta Release Breaking changes
|
||||
|
||||
|
|
|
@ -79,11 +79,11 @@ Parameter | Type | Description
|
|||
`severityLevel?` | [SeverityLevel (number)](https://github.com/microsoft/ApplicationInsights-JS/blob/master/legacy/JavaScript/JavaScriptSDK.Interfaces/Contracts/Generated/SeverityLevel.ts) | **Optional**<br>Severity of the message, ranging from verbose to critical
|
||||
`properties?` | dictionary | **Optional**<br>Map of string to any: Additional data used to [filter pages](https://azure.microsoft.com/documentation/articles/app-insights-api-custom-events-metrics/#properties) in the portal. Defaults to empty.
|
||||
|
||||
By default, uncaught browser exceptions are caught by the SDK and reported to the portal. To disable this behavior, insert the following line in the config section below your instrumentation key:
|
||||
By default, uncaught browser exceptions are caught by the SDK and reported to the portal. To disable this behavior, insert the following line in the config section below your connection string:
|
||||
|
||||
```ts
|
||||
{
|
||||
instrumentationKey: "your instrumentation key",
|
||||
connectionString: "your connection string",
|
||||
disableExceptionTracking: true
|
||||
}
|
||||
```
|
||||
|
|
27
README.md
27
README.md
|
@ -64,11 +64,18 @@ Some of the major changes include
|
|||
|
||||
See the [beta](https://github.com/Microsoft/ApplicationInsights-JS/tree/beta) for the current documented set of breaking changes, all feedback on excessive breaks are welcome current release target is early (1st quarter) 2023.
|
||||
|
||||
|
||||
## Before Getting Started
|
||||
|
||||
This repo does not intended for non-browser enverionments, for example, the Node.js applications.
|
||||
|
||||
For instrumenting a Node.js app, please refer this [repository](https://github.com/microsoft/ApplicationInsights-node.js).
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Create an Application Insights resource in Azure by following [these instructions](https://docs.microsoft.com/en-us/azure/application-insights/app-insights-javascript?toc=/azure/azure-monitor/toc.json).
|
||||
2. Grab the _Instrumentation Key_ (aka "ikey") from the resource you created in
|
||||
step 1. Later, you'll add it to the `instrumentationKey` setting of the Application Insights JavaScript SDK.
|
||||
2. Grab the _Connection String_ from the resource you created in
|
||||
step 1. Later, you'll add it to the `connectionString` setting of the Application Insights JavaScript SDK.
|
||||
3. Add Application Insights to your app. **There are 2 ways to do this.**
|
||||
- Install via NPM. Then, [set up an instance of Application Insights in your app.](#npm-setup-ignore-if-using-snippet-setup)
|
||||
> *Note:* **Typings are included with this package**, so you do **not** need to install a separate typings package.
|
||||
|
@ -87,7 +94,7 @@ See the [beta](https://github.com/Microsoft/ApplicationInsights-JS/tree/beta) fo
|
|||
import { ApplicationInsights } from '@microsoft/applicationinsights-web'
|
||||
|
||||
const appInsights = new ApplicationInsights({ config: {
|
||||
instrumentationKey: 'YOUR_INSTRUMENTATION_KEY_GOES_HERE'
|
||||
connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE'
|
||||
/* ...Other Configuration Options... */
|
||||
} });
|
||||
appInsights.loadAppInsights();
|
||||
|
@ -100,7 +107,7 @@ If your app does not use NPM, you can directly instrument your webpages with App
|
|||
|
||||
```html
|
||||
<script type="text/javascript">
|
||||
!function(T,l,y){var S=T.location,k="script",D="instrumentationKey",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u+"/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_"+c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_"+c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{
|
||||
!function(T,l,y){var S=T.location,k="script",D="connectionString",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u+"/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_"+c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_"+c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{
|
||||
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
|
||||
// name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied
|
||||
// ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout,
|
||||
|
@ -108,7 +115,7 @@ src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
|
|||
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
|
||||
// onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DO NOT ADD anything to the sdk.queue -- As they won't get called)
|
||||
cfg: { // Application Insights Configuration
|
||||
instrumentationKey: "INSTRUMENTATION_KEY"
|
||||
connectionString: "YOUR_CONNECTION_STRING"
|
||||
}});
|
||||
</script>
|
||||
```
|
||||
|
@ -165,7 +172,7 @@ onInit: function (sdk) {
|
|||
});
|
||||
}, // Once the application insights instance has loaded and initialized this method will be called
|
||||
cfg: { // Application Insights Configuration
|
||||
instrumentationKey: "YOUR_INSTRUMENTATION_KEY"
|
||||
connectionString: "YOUR_CONNECTION_STRING"
|
||||
}});
|
||||
</script>
|
||||
```
|
||||
|
@ -209,7 +216,7 @@ After JS script has loaded, include the following snippet to initialize Applicat
|
|||
<script type="text/javascript">
|
||||
var snippet = {
|
||||
config: {
|
||||
instrumentationKey: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
|
||||
connectionString: "InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
|
||||
}
|
||||
};
|
||||
var init = new Microsoft.ApplicationInsights.ApplicationInsights(snippet);
|
||||
|
@ -501,11 +508,11 @@ If you are using the current application insights PRODUCTION SDK (1.0.20) and wa
|
|||
```
|
||||
|
||||
**b)** NPM scenario:
|
||||
Call downloadAndSetup to download full ApplicationInsights script from CDN and initialize it with instrumentation key.
|
||||
Call downloadAndSetup to download full ApplicationInsights script from CDN and initialize it with connection string.
|
||||
|
||||
```ts
|
||||
appInsights.downloadAndSetup({
|
||||
instrumentationKey: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
|
||||
connectionString: "InstrumentationKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
|
||||
url: "https://js.monitor.azure.com/scripts/b/ai.2.min.js"
|
||||
});
|
||||
```
|
||||
|
@ -544,7 +551,7 @@ Usage:
|
|||
```ts
|
||||
const customPluginInstance = new YourCustomPlugin()
|
||||
const appInsights = new ApplicationInsights({ config: {
|
||||
instrumentationKey: 'YOUR_INSTRUMENTATION_KEY_GOES_HERE',
|
||||
connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE',
|
||||
extensions: [customPluginInstance]
|
||||
// Other Configuration Options...
|
||||
}});
|
||||
|
|
|
@ -2183,9 +2183,9 @@
|
|||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.314",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.314.tgz",
|
||||
"integrity": "sha512-+3RmNVx9hZLlc0gW//4yep0K5SYKmIvB5DXg1Yg6varsuAHlHwTeqeygfS8DWwLCsNOWrgj+p9qgM5WYjw1lXQ=="
|
||||
"version": "1.4.315",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz",
|
||||
"integrity": "sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg=="
|
||||
},
|
||||
"node_modules/encodeurl": {
|
||||
"version": "1.0.2",
|
||||
|
@ -7205,9 +7205,9 @@
|
|||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.314",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.314.tgz",
|
||||
"integrity": "sha512-+3RmNVx9hZLlc0gW//4yep0K5SYKmIvB5DXg1Yg6varsuAHlHwTeqeygfS8DWwLCsNOWrgj+p9qgM5WYjw1lXQ=="
|
||||
"version": "1.4.315",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.315.tgz",
|
||||
"integrity": "sha512-ndBQYz3Eyy3rASjjQ9poMJGoAlsZ/aZnq6GBsGL4w/4sWIAwiUHVSsMuADbxa8WJw7pZ0oxLpGbtoDt4vRTdCg=="
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
|
|
|
@ -95,11 +95,11 @@ First lets check for JavaScript exceptions, using a browser that supports develo
|
|||
|
||||
If there are exceptions being reported in the SDK script (for example ai.2.min.js), then this may indicate that the configuration passed into the SDK contains unexpected or missing required configuration or a faulty release has been deployed to the CDN.
|
||||
|
||||
To check for faulty configuration, change the configuration passed into the snippet (if not already) so that it only includes your instrumentation key as a string value
|
||||
To check for faulty configuration, change the configuration passed into the snippet (if not already) so that it only includes your connection string as a string value
|
||||
|
||||
> src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",<br />
|
||||
> cfg:{<br />
|
||||
> instrumentationKey: "INSTRUMENTATION_KEY"<br />
|
||||
> connectionString: "YOUR_CONNECTION_STRING"<br />
|
||||
> }});<br />
|
||||
|
||||
If when using this minimal configuration you are still seeing a JavaScript exception in the SDK script, please [create a support ticket](#create-a-support-ticket) with the details as this will require the faulty build to be rolled back as it's most likely an issue with a newly deployed version.
|
||||
|
@ -110,7 +110,7 @@ If your configuration was previously deployed and working but just started repor
|
|||
|
||||
Assuming there are no exceptions being thrown the next step is to enabling console debugging by adding ```loggingLevelConsole``` setting to the configuration, this will send all initialization errors and warnings to the browsers console (normally available via the developer tools (F12)). Any reported errors should be self-explanatory and if you need further assistance [file an issue on GitHub](https://github.com/Microsoft/ApplicationInsights-JS/issues).
|
||||
> cfg:{<br />
|
||||
> instrumentationKey: "INSTRUMENTATION_KEY",<br />
|
||||
> connectionString: "CONNECTION_STRING",<br />
|
||||
> loggingLevelConsole: 2<br />
|
||||
> }});<br />
|
||||
|
||||
|
@ -126,7 +126,7 @@ If it still fails to initialize, try enabling the ```enableDebug``` configuratio
|
|||
|
||||
> src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.js",<br />
|
||||
> cfg:{<br />
|
||||
> instrumentationKey: "INSTRUMENTATION_KEY",<br />
|
||||
> connectionString: "CONNECTION_STRING",<br />
|
||||
> enableDebug: true<br />
|
||||
> }});<br />
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ let _appInsights: ApplicationInsights;
|
|||
* @param config
|
||||
* @returns
|
||||
*/
|
||||
export function initApplicationInsights(config: IConfiguration) {
|
||||
export function initApplicationInsights(config: IConfiguration, onInitCallback: (appInsights: ApplicationInsights, port: MessagePort) => void, port: MessagePort) {
|
||||
|
||||
if (!_appInsights) {
|
||||
// Make sure we have a configuration object
|
||||
|
@ -25,7 +25,11 @@ export function initApplicationInsights(config: IConfiguration) {
|
|||
});
|
||||
|
||||
_appInsights.loadAppInsights();
|
||||
_appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview
|
||||
if (_appInsights.core.isInitialized()) {
|
||||
// Call the callback before the trackPageView
|
||||
onInitCallback(_appInsights, port);
|
||||
_appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview
|
||||
}
|
||||
|
||||
return _appInsights;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import { initApplicationInsights, trackPageView, unloadApplicationInsights } from "./worker-npm-init";
|
||||
import { ExampleMessageType, IExampleRequest, IExampleResponse } from "./interfaces/IExampleMessage";
|
||||
import { IConfiguration, INotificationListener } from "@microsoft/applicationinsights-web";
|
||||
import { ApplicationInsights, IConfiguration, INotificationListener } from "@microsoft/applicationinsights-web";
|
||||
import { dumpObj, objAssign } from "@nevware21/ts-utils";
|
||||
|
||||
/**
|
||||
|
@ -12,7 +12,16 @@ import { dumpObj, objAssign } from "@nevware21/ts-utils";
|
|||
* the connection string.
|
||||
*/
|
||||
const defaultApplicationInsightsConfig: IConfiguration = {
|
||||
|
||||
/**
|
||||
* Telemtry logging level to instrumentation key. All logs with a severity
|
||||
* level higher than the configured level will sent as telemetry data to
|
||||
* the configured instrumentation key.
|
||||
*
|
||||
* 0: ALL iKey logging off
|
||||
* 1: logs to iKey: severity >= CRITICAL
|
||||
* 2: logs to iKey: severity >= WARNING
|
||||
*/
|
||||
loggingLevelTelemetry: 2
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -91,6 +100,31 @@ function notificationListener(port: MessagePort): INotificationListener {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* We only want to add any notification listener or telemetry initializer once
|
||||
* otherwise they WILL get called multiple times during processing.
|
||||
* @param appInsights
|
||||
* @param port
|
||||
*/
|
||||
function onInitAddInitializers(appInsights: ApplicationInsights, port: MessagePort) {
|
||||
// This callback is only called once, otherwise we would keep adding listeners and initializers
|
||||
appInsights.core.getNotifyMgr().addNotificationListener(notificationListener(port));
|
||||
|
||||
// This is not normally needed, but this provides a view from the worker to the
|
||||
// main page about errors that the worker is having / seeing
|
||||
appInsights.addTelemetryInitializer((theEvent) => {
|
||||
if (theEvent && theEvent.name && theEvent.name["startsWith"]("InternalMessageId") && theEvent.baseData) {
|
||||
port.postMessage({
|
||||
success: true,
|
||||
message: "Internal Message: " + (theEvent.baseData?.message || "--")
|
||||
});
|
||||
|
||||
// Drop ALL internal message from being sent to Azure Monitor portal
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the SDK using the passed connection string from the request (if supplied)
|
||||
* @param request
|
||||
|
@ -100,9 +134,8 @@ function notificationListener(port: MessagePort): INotificationListener {
|
|||
function workerLoadSdk(request: IExampleRequest, port: MessagePort) {
|
||||
let theConfig = objAssign({}, defaultApplicationInsightsConfig);
|
||||
theConfig.connectionString = request.connectionString;
|
||||
let appInsights = initApplicationInsights(theConfig);
|
||||
let appInsights = initApplicationInsights(theConfig, onInitAddInitializers, port);
|
||||
if (appInsights && appInsights.core.isInitialized()) {
|
||||
appInsights.core.getNotifyMgr().addNotificationListener(notificationListener(port));
|
||||
return {
|
||||
success: true,
|
||||
message: `SDK Loaded and Initialized with - ${appInsights.config.connectionString}`
|
||||
|
|
|
@ -9,6 +9,7 @@ import {
|
|||
IAppInsightsCore, IDiagnosticLogger, IProcessTelemetryUnloadContext, ITelemetryUnloadState, _eInternalMessageId, _throwInternal,
|
||||
arrForEach, dumpObj, eLoggingSeverity, getDocument, getExceptionName, getLocation, isNullOrUndefined
|
||||
} from "@microsoft/applicationinsights-core-js";
|
||||
import { isWebWorker } from "@nevware21/ts-utils";
|
||||
import { PageViewPerformanceManager } from "./PageViewPerformanceManager";
|
||||
|
||||
/**
|
||||
|
@ -99,11 +100,13 @@ export class PageViewManager {
|
|||
);
|
||||
_flushChannels(true);
|
||||
|
||||
// no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)
|
||||
_throwInternal(_logger,
|
||||
eLoggingSeverity.WARNING,
|
||||
_eInternalMessageId.NavigationTimingNotSupported,
|
||||
"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.");
|
||||
if (!isWebWorker()) {
|
||||
// no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)
|
||||
_throwInternal(_logger,
|
||||
eLoggingSeverity.WARNING,
|
||||
_eInternalMessageId.NavigationTimingNotSupported,
|
||||
"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ const clickPluginConfig = {
|
|||
};
|
||||
// Application Insights Configuration
|
||||
const configObj = {
|
||||
instrumentationKey: "YOUR INSTRUMENTATION KEY",
|
||||
connectionString: 'YOUR_CONNECTION_STRING',
|
||||
extensions: [clickPluginInstance],
|
||||
extensionConfig: {
|
||||
[clickPluginInstance.identifier]: clickPluginConfig
|
||||
|
@ -100,7 +100,7 @@ appInsights.loadAppInsights();
|
|||
}
|
||||
// Application Insights Configuration
|
||||
var configObj = {
|
||||
instrumentationKey: "YOUR INSTRUMENTATION KEY",
|
||||
connectionString: 'YOUR CONNECTION STRING",
|
||||
extensions: [
|
||||
clickPluginInstance
|
||||
],
|
||||
|
@ -331,7 +331,7 @@ var behaviorMap = {
|
|||
|
||||
// Application Insights Configuration
|
||||
var configObj = {
|
||||
instrumentationKey: "YOUR INSTRUMENTATION KEY",
|
||||
connectionString: "YOUR CONNECTION STRING",
|
||||
extensions: [clickPluginInstance],
|
||||
extensionConfig: {
|
||||
[clickPluginInstance.identifier]: {
|
||||
|
|
|
@ -335,7 +335,6 @@ export class ajaxRecord {
|
|||
duration: self.ajaxTotalDuration,
|
||||
success: (+(self.status)) >= 200 && (+(self.status)) < 400,
|
||||
responseCode: (+(self.status)),
|
||||
method: self.method,
|
||||
[STR_PROPERTIES]: { HttpMethod: self.method }
|
||||
} as IDependencyTelemetry;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ const perfManager = new PerfMarkMeasureManager();
|
|||
|
||||
// Application Insights Configuration
|
||||
const configObj = {
|
||||
instrumentationKey: "YOUR INSTRUMENTATION KEY",
|
||||
connectionString: 'YOUR CONNECTION STRING",
|
||||
};
|
||||
|
||||
const appInsights = new ApplicationInsights({ config: configObj });
|
||||
|
|
Загрузка…
Ссылка в новой задаче