This module provides a consistent way for extensions to report telemetry
over Application Insights. The module respects the user's decision about whether or
not to send telemetry data. See telemetry extension guidelines for more information on using telemetry in your extension.
Follow guide to set up Application Insights in Azure and get your key. Don't worry about hardcoding it, it is not sensitive.
Install
With npm:
npm install @vscode/extension-telemetry
With yarn:
yarn add @vscode/extension-telemetry
Usage
Setup
import * as vscode from 'vscode';
import TelemetryReporter from '@vscode/extension-telemetry';
const extensionId = '<your extension unique name>';
const extensionVersion = '<your extension version>';
const key = '<your key>';
let reporter;
function activate(context: vscode.ExtensionContext) {
reporter = new TelemetryReporter(extensionId, extensionVersion, key);
context.subscriptions.push(reporter);
}
First-Party
By default, we use the AppInsights key to detect whether or not the telemetry is first-party. The constructor now takes an optional parameter that will force the reporter to treat telemetry as first-party. This parameter will not override in the false direction.
Sending Events
Use this method for sending general events to App Insights.
reporter.sendTelemetryEvent('sampleEvent', { 'stringProp': 'some string' }, { 'numericMeasure': 123 });
Sending Exceptions
Use this method for diagnostics in App Insights. This method will automatically drop events in certain environments for first party extensions.
try { ... } catch (error) {
reporter.sendTelemetryException(error, { 'stringProp': 'some string' }, { 'numericMeasure': 123 });
}
Sending Errors as Events
Use this method for sending error telemetry as traditional events to App Insights. This method will automatically drop error properties in certain environments for first party extensions. The last parameter is an optional list of case-sensitive properties that should be dropped. If no array is passed, we will drop all properties but still send the event.
reporter.sendTelemetryErrorEvent('sampleErrorEvent', { 'stringProp': 'some string', 'stackProp': 'some user stack trace' }, { 'numericMeasure': 123 }, [ 'stackProp' ]);
Common Properties
- Extension Name
common.extname
- The extension name - Extension Version
common.extversion
- The extension version - Machine Identifier
common.vscodemachineid
- A common machine identifier generated by VS Code - Session Identifier
common.vscodesessionid
- A session identifier generated by VS Code - VS Code Version
common.vscodeversion
- The version of VS Code running the extension - OS
common.os
- The OS running VS Code - Platform Version
common.platformversion
- The version of the OS/Platform - Product
common.product
- What Vs code is hosted in, i.e. desktop, github.dev, codespaces. - UI Kind
common.uikind
- Web or Desktop indicating where VS Code is running - Remote Name
common.remotename
- A name to identify the type of remote connection. other
indicates a remote connection not from the 3 main extensions (ssh, docker, wsl). - Architecture
common.nodeArch
- What architecture of node is running. i.e. arm or x86. On the web it will just say web
.
License
MIT