Skip to content

Commit

Permalink
fixup! feat(core): add stringToLogLevel utility
Browse files Browse the repository at this point in the history
  • Loading branch information
pichlermarc committed Feb 13, 2025
1 parent abece9b commit e954193
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ For semantic convention package changes, see the [semconv CHANGELOG](packages/se
* feat(sdk-trace-base): add stack trace warning to debug instrumentation [#5363](https://github.com/open-telemetry/opentelemetry-js/pull/5363) @neilfordyce
* feat(core): add more scalable replacements for getEnv(), getEnvWithoutDefaults() [#5443](https://github.com/open-telemetry/opentelemetry-js/pull/5443) @pichlermarc
* refactor(exporter-jaeger): migrate away from getEnv() [#5464](https://github.com/open-telemetry/opentelemetry-js/pull/5464) @pichlermarc
* feat(core): add stringToLogLevel utility [#????](https://github.com/open-telemetry/opentelemetry-js/pull/????) @pichlermarc

### :bug: (Bug Fix)

Expand Down
1 change: 1 addition & 0 deletions experimental/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ All notable changes to experimental packages in this project will be documented
* refactor(exporter-prometheus): remove unnecessary isNaN() check [#5377](https://github.com/open-telemetry/opentelemetry-js/pull/5377) @cjihrig
* refactor(sdk-node): move code to auto-instantiate propagators into utils [#5355](https://github.com/open-telemetry/opentelemetry-js/pull/5355) @pichlermarc
* chore: unpin `@opentelemetry/semantic-conventions` dep to allow better de-duplication in installs [#5439](https://github.com/open-telemetry/opentelemetry-js/pull/5439) @trentm
* refactor(sdk-node): migrate away from getEnv() [#????](https://github.com/open-telemetry/opentelemetry-js/pull/????) @pichlermarc

## 0.57.0

Expand Down
2 changes: 1 addition & 1 deletion packages/opentelemetry-core/src/utils/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export function stringToLogLevel(

if (resolvedLogLevel == null) {
diag.warn(
`Cannot resolve log level ${inspect(value)}, expected one of ${inspect(Object.keys(logLevelMap))}, using default`
`Unknown log level ${inspect(value)}, expected one of ${inspect(Object.keys(logLevelMap))}, using default`
);
return DiagLogLevel.INFO;
}
Expand Down
54 changes: 54 additions & 0 deletions packages/opentelemetry-core/test/common/utils/configuration.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright The OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { stringToLogLevel } from '../../../src';
import * as assert from 'assert';
import * as sinon from 'sinon';
import { diag, DiagLogLevel } from '@opentelemetry/api';

describe('stringToLogLevel', function () {
afterEach(function () {
sinon.restore();
});

it('should map valid string to log level', function () {
assert.strictEqual(stringToLogLevel('ALL'), DiagLogLevel.ALL);
assert.strictEqual(stringToLogLevel('VERBOSE'), DiagLogLevel.VERBOSE);
assert.strictEqual(stringToLogLevel('DEBUG'), DiagLogLevel.DEBUG);
assert.strictEqual(stringToLogLevel('INFO'), DiagLogLevel.INFO);
assert.strictEqual(stringToLogLevel('WARN'), DiagLogLevel.WARN);
assert.strictEqual(stringToLogLevel('ERROR'), DiagLogLevel.ERROR);
assert.strictEqual(stringToLogLevel('NONE'), DiagLogLevel.NONE);
});

it('should ignore casing when resolving', function () {
assert.strictEqual(stringToLogLevel('error'), DiagLogLevel.ERROR);
assert.strictEqual(stringToLogLevel('eRRoR'), DiagLogLevel.ERROR);
});

it('should return undefined on undefined input', function () {
assert.strictEqual(stringToLogLevel(undefined), undefined);
});

it('should return undefined on null input', function () {
assert.strictEqual(stringToLogLevel(undefined), undefined);
});

it('should fall back to INFO and warn on input that cannot be mapped', function () {
const warnStub = sinon.stub(diag, 'warn');
assert.strictEqual(stringToLogLevel('does not exist'), DiagLogLevel.INFO);
sinon.assert.calledOnceWithMatch(warnStub, 'Unknown');
});
});

0 comments on commit e954193

Please sign in to comment.