@azure/monitor-opentelemetry
Version:
Azure Monitor OpenTelemetry (Node.js)
131 lines • 4.8 kB
JavaScript
"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const logger_1 = require("@azure/logger");
const api_1 = require("@opentelemetry/api");
const diagFileConsoleLogger_js_1 = require("./diagFileConsoleLogger.js");
class Logger {
static getInstance() {
if (!Logger.instance) {
Logger.instance = new Logger();
}
return Logger.instance;
}
constructor() {
this.azureLogger = (0, logger_1.createClientLogger)("@azure/monitor-opentelemetry");
this.openTelemetryLogger = api_1.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 = api_1.DiagLogLevel.WARN; // Default
switch (otelLogLevelEnv) {
case "ALL":
this.diagLevel = api_1.DiagLogLevel.ALL;
break;
case "DEBUG":
this.diagLevel = api_1.DiagLogLevel.DEBUG;
break;
case "ERROR":
this.diagLevel = api_1.DiagLogLevel.ERROR;
break;
case "INFO":
this.diagLevel = api_1.DiagLogLevel.INFO;
break;
case "NONE":
this.diagLevel = api_1.DiagLogLevel.NONE;
break;
case "VERBOSE":
this.diagLevel = api_1.DiagLogLevel.VERBOSE;
break;
case "WARN":
this.diagLevel = api_1.DiagLogLevel.WARN;
break;
}
// Set OpenTelemetry Logger
const fileConsoleLogger = new diagFileConsoleLogger_js_1.DiagFileConsoleLogger();
api_1.diag.setLogger(fileConsoleLogger, {
logLevel: this.diagLevel,
suppressOverrideMessage: true,
});
const azureLogLevelEnv = process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL;
switch (azureLogLevelEnv) {
// Application Insights levels
case "VERBOSE":
(0, logger_1.setLogLevel)("verbose");
break;
case "INFO":
(0, logger_1.setLogLevel)("info");
break;
case "WARN":
(0, logger_1.setLogLevel)("warning");
break;
case "ERROR":
(0, logger_1.setLogLevel)("error");
break;
default:
(0, logger_1.setLogLevel)(process.env.AZURE_LOG_LEVEL || "warning");
break;
}
// Override Azure logger
logger_1.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;
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map