@azure/monitor-opentelemetry
Version:
Azure Monitor OpenTelemetry (Node.js)
127 lines • 4.54 kB
JavaScript
// 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