packages/opentelemetry-node/lib/environment.js (22 lines of code) (raw):
/*
* Copyright Elasticsearch B.V. and contributors
* SPDX-License-Identifier: Apache-2.0
*/
/** @type {NodeJS.ProcessEnv} */
const envToRestore = {};
/**
* Tweak `process.env` before calling NodeSDK.
*/
function setupEnvironment() {
if ('OTEL_LOG_LEVEL' in process.env) {
envToRestore['OTEL_LOG_LEVEL'] = process.env.OTEL_LOG_LEVEL;
// Make sure NodeSDK doesn't see this envvar and overwrite our diag
// logger. It is restored below.
delete process.env.OTEL_LOG_LEVEL;
}
if ('OTEL_NODE_RESOURCE_DETECTORS' in process.env) {
envToRestore['OTEL_NODE_RESOURCE_DETECTORS'] =
process.env.OTEL_NODE_RESOURCE_DETECTORS;
// Make sure NodeSDK doesn't see this envvar and logs some false errors
// about detectors. It is restored below.
// Ref: https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-sdk-node/src/utils.ts#L35-L41
delete process.env.OTEL_NODE_RESOURCE_DETECTORS;
}
}
/**
* Restores any `process.env` stashed in `setupEnvironment()`.
*/
function restoreEnvironment() {
Object.keys(envToRestore).forEach((k) => {
process.env[k] = envToRestore[k];
delete envToRestore[k];
});
}
module.exports = {
setupEnvironment,
restoreEnvironment,
};