Skip to content

Commit da0fac5

Browse files
author
Naseem
committed
feat: expect LogLevelString instead of number as OTEL_LOG_LEVEL value
Signed-off-by: Naseem <[email protected]>
1 parent 0f2438b commit da0fac5

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

packages/opentelemetry-core/src/utils/environment.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { LogLevel } from '../common/types';
17+
import { LogLevel, LogLevelString } from '../common/types';
1818

1919
export type ENVIRONMENT_MAP = { [key: string]: string | number };
2020

@@ -79,7 +79,13 @@ export function parseEnvironment(values: ENVIRONMENT_MAP): ENVIRONMENT {
7979
break;
8080

8181
case 'OTEL_LOG_LEVEL':
82-
parseNumber(key, environment, values, LogLevel.ERROR, LogLevel.DEBUG);
82+
let logLevel
83+
const value = values[key]
84+
if (value && typeof value === 'string') {
85+
const logLevelString = value.toUpperCase() as LogLevelString
86+
logLevel = LogLevel[logLevelString];
87+
}
88+
environment[key] = logLevel ?? LogLevel.ERROR;
8389
break;
8490

8591
default:

packages/opentelemetry-core/test/common/ConsoleLogger.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ describe('ConsoleLogger', () => {
119119

120120
if (typeof process !== 'undefined' && process.release.name === 'node')
121121
it('should log with environmentally set level in Node', () => {
122-
process.env.OTEL_LOG_LEVEL = '1'; // 1 maps to WARN
122+
process.env.OTEL_LOG_LEVEL = 'WARN';
123123
const consoleLogger = new ConsoleLogger();
124124
consoleLogger.error('error called');
125125
assert.deepStrictEqual(errorCalledArgs, ['error called']);

packages/opentelemetry-core/test/utils/environment.test.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
} from '../../src/utils/environment';
2323
import * as assert from 'assert';
2424
import * as sinon from 'sinon';
25+
import { LogLevel } from '../../src';
2526

2627
let lastMock: ENVIRONMENT_MAP = {};
2728

@@ -68,15 +69,23 @@ describe('environment', () => {
6869
mockEnvironment({
6970
FOO: '1',
7071
OTEL_NO_PATCH_MODULES: 'a,b,c',
71-
OTEL_LOG_LEVEL: '1',
72+
OTEL_LOG_LEVEL: 'WARN',
7273
OTEL_SAMPLING_PROBABILITY: '0.5',
7374
});
7475
const env = getEnv();
7576
assert.strictEqual(env.OTEL_NO_PATCH_MODULES, 'a,b,c');
76-
assert.strictEqual(env.OTEL_LOG_LEVEL, 1);
77+
assert.strictEqual(env.OTEL_LOG_LEVEL, LogLevel.WARN);
7778
assert.strictEqual(env.OTEL_SAMPLING_PROBABILITY, 0.5);
7879
});
7980

81+
it('should parse OTEL_LOG_LEVEL despite casing', () => {
82+
mockEnvironment({
83+
OTEL_LOG_LEVEL: 'waRn',
84+
});
85+
const env = getEnv();
86+
assert.strictEqual(env.OTEL_LOG_LEVEL, LogLevel.WARN);
87+
});
88+
8089
it('should parse environment variables and use defaults', () => {
8190
const env = getEnv();
8291
Object.keys(DEFAULT_ENVIRONMENT).forEach(envKey => {

0 commit comments

Comments
 (0)