Skip to content

Commit 56a7636

Browse files
committed
refactor(auto-instrumentations-node): use env var utility functions to setup diagnostics logging
1 parent d2c1be4 commit 56a7636

File tree

3 files changed

+13
-69
lines changed

3 files changed

+13
-69
lines changed

metapackages/auto-instrumentations-node/src/register.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,20 @@
1616
import * as opentelemetry from '@opentelemetry/sdk-node';
1717
import { diag, DiagConsoleLogger } from '@opentelemetry/api';
1818
import {
19-
getLogLevelFromEnv,
19+
getStringFromEnv,
20+
diagLogLevelFromString,
21+
} from '@opentelemetry/core';
22+
import {
2023
getNodeAutoInstrumentations,
2124
getResourceDetectorsFromEnv,
2225
} from './utils';
2326

24-
diag.setLogger(new DiagConsoleLogger(), getLogLevelFromEnv());
27+
const logLevel = getStringFromEnv('OTEL_LOG_LEVEL');
28+
if (logLevel != null) {
29+
diag.setLogger(new DiagConsoleLogger(), {
30+
logLevel: diagLogLevelFromString(logLevel),
31+
});
32+
}
2533

2634
const sdk = new opentelemetry.NodeSDK({
2735
instrumentations: getNodeAutoInstrumentations(),

metapackages/auto-instrumentations-node/src/utils.ts

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { diag, DiagLogLevel } from '@opentelemetry/api';
17+
import { diag } from '@opentelemetry/api';
1818
import { Instrumentation } from '@opentelemetry/instrumentation';
1919

2020
import { AmqplibInstrumentation } from '@opentelemetry/instrumentation-amqplib';
@@ -135,17 +135,6 @@ const InstrumentationMap = {
135135
'@opentelemetry/instrumentation-winston': WinstonInstrumentation,
136136
};
137137

138-
// The support string -> DiagLogLevel mappings
139-
const logLevelMap: { [key: string]: DiagLogLevel } = {
140-
ALL: DiagLogLevel.ALL,
141-
VERBOSE: DiagLogLevel.VERBOSE,
142-
DEBUG: DiagLogLevel.DEBUG,
143-
INFO: DiagLogLevel.INFO,
144-
WARN: DiagLogLevel.WARN,
145-
ERROR: DiagLogLevel.ERROR,
146-
NONE: DiagLogLevel.NONE,
147-
};
148-
149138
const defaultExcludedInstrumentations = [
150139
'@opentelemetry/instrumentation-fs',
151140
'@opentelemetry/instrumentation-fastify',
@@ -303,16 +292,3 @@ export function getResourceDetectorsFromEnv(): Array<ResourceDetector> {
303292
return resourceDetector || [];
304293
});
305294
}
306-
307-
export function getLogLevelFromEnv(): DiagLogLevel {
308-
const rawLogLevel = process.env.OTEL_LOG_LEVEL;
309-
310-
// NOTE: as per specification we should actually only register if something is set, but our previous implementation
311-
// always registered a logger, even when nothing was set. Falling back to 'INFO' here to keep the same behavior as
312-
// with previous implementations.
313-
// Also: no point in warning - no logger is registered yet
314-
return (
315-
logLevelMap[rawLogLevel?.trim().toUpperCase() ?? 'INFO'] ??
316-
DiagLogLevel.INFO
317-
);
318-
}

metapackages/auto-instrumentations-node/test/utils.test.ts

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { diag, DiagLogLevel } from '@opentelemetry/api';
17+
import { diag } from '@opentelemetry/api';
1818
import { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-http';
1919
import * as assert from 'assert';
2020
import * as sinon from 'sinon';
2121
import { getNodeAutoInstrumentations } from '../src';
22-
import { getLogLevelFromEnv, getResourceDetectorsFromEnv } from '../src/utils';
22+
import { getResourceDetectorsFromEnv } from '../src/utils';
2323

2424
describe('utils', () => {
2525
describe('getNodeAutoInstrumentations', () => {
@@ -223,44 +223,4 @@ describe('utils', () => {
223223
delete process.env.OTEL_NODE_RESOURCE_DETECTORS;
224224
});
225225
});
226-
227-
describe('getLogLevelFromEnv', function () {
228-
afterEach(function () {
229-
delete process.env.OTEL_LOG_LEVEL;
230-
});
231-
232-
it('should select log level based on env var', function () {
233-
process.env.OTEL_LOG_LEVEL = 'NONE';
234-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.NONE);
235-
process.env.OTEL_LOG_LEVEL = 'VERBOSE';
236-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.VERBOSE);
237-
process.env.OTEL_LOG_LEVEL = 'DEBUG';
238-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.DEBUG);
239-
process.env.OTEL_LOG_LEVEL = 'INFO';
240-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.INFO);
241-
process.env.OTEL_LOG_LEVEL = 'WARN';
242-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.WARN);
243-
process.env.OTEL_LOG_LEVEL = 'ERROR';
244-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.ERROR);
245-
process.env.OTEL_LOG_LEVEL = 'ALL';
246-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.ALL);
247-
});
248-
249-
it('should ignore casing', function () {
250-
process.env.OTEL_LOG_LEVEL = 'warn';
251-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.WARN);
252-
process.env.OTEL_LOG_LEVEL = 'WaRN';
253-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.WARN);
254-
});
255-
256-
it('should fall back to INFO on bogus input', function () {
257-
process.env.OTEL_LOG_LEVEL = 'bogus';
258-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.INFO);
259-
});
260-
261-
it('should use INFO when unset', function () {
262-
delete process.env.OTEL_LOG_LEVEL;
263-
assert.strictEqual(getLogLevelFromEnv(), DiagLogLevel.INFO);
264-
});
265-
});
266226
});

0 commit comments

Comments
 (0)