Skip to content

Commit e37d983

Browse files
authored
refactor(auto-instrumentations-node): use env var utility functions to setup diagnostics logging (#2778)
1 parent d2c1be4 commit e37d983

File tree

4 files changed

+13
-70
lines changed

4 files changed

+13
-70
lines changed

metapackages/auto-instrumentations-node/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@
3333
"url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues"
3434
},
3535
"peerDependencies": {
36-
"@opentelemetry/api": "^1.4.1"
36+
"@opentelemetry/api": "^1.4.1",
37+
"@opentelemetry/core": "^2.0.0"
3738
},
3839
"devDependencies": {
3940
"@opentelemetry/api": "^1.4.1",
41+
"@opentelemetry/core": "^2.0.0",
4042
"@types/mocha": "10.0.10",
4143
"@types/node": "18.18.14",
4244
"@types/sinon": "17.0.4",

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,18 @@
1515
*/
1616
import * as opentelemetry from '@opentelemetry/sdk-node';
1717
import { diag, DiagConsoleLogger } from '@opentelemetry/api';
18+
import { getStringFromEnv, diagLogLevelFromString } from '@opentelemetry/core';
1819
import {
19-
getLogLevelFromEnv,
2020
getNodeAutoInstrumentations,
2121
getResourceDetectorsFromEnv,
2222
} from './utils';
2323

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

2631
const sdk = new opentelemetry.NodeSDK({
2732
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)