From 6d4cd2b760770607432c038177871ea7b5bb4ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luismi=20Rami=CC=81rez?= Date: Tue, 19 Dec 2023 14:12:15 +0100 Subject: [PATCH] Add OpenTelemetry diag logger In order to get more information when our users encounter issues, the OpenTelemetry diag logger is now enabled when the AppSignal log level is set to trace. --- .changesets/add-opentelemetry-diag-logger.md | 6 ++++++ package-lock.json | 4 ++-- src/client.ts | 13 +++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 .changesets/add-opentelemetry-diag-logger.md diff --git a/.changesets/add-opentelemetry-diag-logger.md b/.changesets/add-opentelemetry-diag-logger.md new file mode 100644 index 00000000..56e08906 --- /dev/null +++ b/.changesets/add-opentelemetry-diag-logger.md @@ -0,0 +1,6 @@ +--- +bump: "patch" +type: "add" +--- + +When the AppSignal log level is set to "trace". Additional information from the OpenTelemetry instrumentations is now logged. diff --git a/package-lock.json b/package-lock.json index 15065cad..4b7ff248 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@appsignal/nodejs", - "version": "3.0.28", + "version": "3.0.29", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@appsignal/nodejs", - "version": "3.0.28", + "version": "3.0.29", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/src/client.ts b/src/client.ts index b360c11c..efed3921 100644 --- a/src/client.ts +++ b/src/client.ts @@ -9,6 +9,7 @@ import { demo } from "./demo" import { VERSION } from "./version" import { setParams, setSessionData } from "./helpers" import { BaseLogger, Logger, LoggerFormat, LoggerLevel } from "./logger" +import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api" import { Instrumentation } from "@opentelemetry/instrumentation" import { @@ -157,6 +158,7 @@ export class Client { this.#metrics = new Metrics() if (this.config.data.initializeOpentelemetrySdk) { this.#sdk = this.initOpenTelemetry() + this.setUpOpenTelemetryLogger() } } } else { @@ -416,6 +418,17 @@ export class Client { return logger } + /** + * Sets up the OpenTelemetry diag logger based on our integration logger level. + * If our integration logger level is "silly" ("trace"), the OpenTelemetry diag debug messages + * are logged. + */ + private setUpOpenTelemetryLogger(): void { + if (this.config.data["logLevel"] === "trace") { + diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG) + } + } + /** * Stores the client in global object after initializing */