in runtimes/runtimes/operational-telemetry/operational-telemetry-service.ts [43:89]
private constructor(config: OperationalTelemetryConfig) {
diag.setLogger(
{
debug: message => config.lspConsole.debug(message),
error: message => config.lspConsole.error(message),
info: message => config.lspConsole.info(message),
verbose: message => config.lspConsole.log(message),
warn: message => config.lspConsole.warn(message),
},
DiagLogLevel.ALL
)
const operationalTelemetryResource: OperationalTelemetryResource = {
'server.name': config.serviceName,
'server.version': config.serviceVersion,
'clientInfo.name': config.extendedClientInfo?.name,
'clientInfo.version': config.extendedClientInfo?.version,
'clientInfo.clientId': config.extendedClientInfo?.clientId,
'clientInfo.extension.name': config.extendedClientInfo?.extension.name,
'clientInfo.extension.version': config.extendedClientInfo?.extension.version,
'operational.telemetry.schema.version': '1.0.0',
sessionId: randomUUID(),
}
this.baseResource = resourceFromAttributes({ ...operationalTelemetryResource })
this.awsConfig = {
endpoint: config.endpoint,
}
this.telemetryOptOut = config.telemetryOptOut
if (!this.telemetryOptOut) {
this.startupSdk()
}
// Registering process events callbacks once
process.on('uncaughtException', async () => {
// Telemetry signals are force flushed to their exporters on shutdown.
await this.shutdownSdk()
process.exit(1)
})
process.on('beforeExit', async () => {
// Telemetry signals are force flushed to their exporters on shutdown.
await this.shutdownSdk()
})
}