UNPKG

@azure/monitor-opentelemetry

Version:
127 lines 4.54 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { AzureLogger, createClientLogger, setLogLevel } from "@azure/logger"; import { diag, DiagLogLevel } from "@opentelemetry/api"; import { DiagFileConsoleLogger } from "./diagFileConsoleLogger.js"; export class Logger { static getInstance() { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } constructor() { this.azureLogger = createClientLogger("@azure/monitor-opentelemetry"); this.openTelemetryLogger = diag.createComponentLogger({ namespace: "@azure/monitor-opentelemetry", }); this.logToOpenTelemetry = true; this.logToAzureLogger = false; const otelLogLevelEnv = process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL || process.env.OTEL_LOG_LEVEL; this.diagLevel = DiagLogLevel.WARN; // Default switch (otelLogLevelEnv) { case "ALL": this.diagLevel = DiagLogLevel.ALL; break; case "DEBUG": this.diagLevel = DiagLogLevel.DEBUG; break; case "ERROR": this.diagLevel = DiagLogLevel.ERROR; break; case "INFO": this.diagLevel = DiagLogLevel.INFO; break; case "NONE": this.diagLevel = DiagLogLevel.NONE; break; case "VERBOSE": this.diagLevel = DiagLogLevel.VERBOSE; break; case "WARN": this.diagLevel = DiagLogLevel.WARN; break; } // Set OpenTelemetry Logger const fileConsoleLogger = new DiagFileConsoleLogger(); diag.setLogger(fileConsoleLogger, { logLevel: this.diagLevel, suppressOverrideMessage: true, }); const azureLogLevelEnv = process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL; switch (azureLogLevelEnv) { // Application Insights levels case "VERBOSE": setLogLevel("verbose"); break; case "INFO": setLogLevel("info"); break; case "WARN": setLogLevel("warning"); break; case "ERROR": setLogLevel("error"); break; default: setLogLevel(process.env.AZURE_LOG_LEVEL || "warning"); break; } // Override Azure logger AzureLogger.log = (...args) => { fileConsoleLogger.logMessage(...args); }; } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types error(message, ...args) { if (this.logToAzureLogger) { this.azureLogger.error(message, args); } if (this.logToOpenTelemetry) { this.openTelemetryLogger.error(message, args); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types warn(message, ...args) { if (this.logToAzureLogger) { this.azureLogger.warning(message, args); } if (this.logToOpenTelemetry) { this.openTelemetryLogger.warn(message, args); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types info(message, ...args) { if (this.logToAzureLogger) { this.azureLogger.info(message, args); } if (this.logToOpenTelemetry) { this.openTelemetryLogger.info(message, args); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types debug(message, ...args) { if (this.logToAzureLogger) { this.azureLogger.verbose(message, args); } if (this.logToOpenTelemetry) { this.openTelemetryLogger.debug(message, args); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types verbose(message, ...args) { if (this.logToAzureLogger) { this.azureLogger.verbose(message, args); } if (this.logToOpenTelemetry) { this.openTelemetryLogger.verbose(message, args); } } setLogToAzureLogger(value) { this.logToAzureLogger = value; } setLogToOpenTelemetry(value) { this.logToOpenTelemetry = value; } } //# sourceMappingURL=logger.js.map