Skip to content

Commit 6547440

Browse files
trentmpichlermarc
andauthored
fix(sdk-logs): ensure default resource attributes are used as fallbacks when a resource is passed to LoggerProvider (#4564)
Before this Resource.default() attributes would only be used if *no* resource was given to LoggerProvider. That would mean that 'service.name' and others could be missing, e.g. when called from NodeSDK. Co-authored-by: Marc Pichler <[email protected]>
1 parent 5489797 commit 6547440

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

experimental/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ All notable changes to experimental packages in this project will be documented
2626

2727
* fix(exporter-*-otlp-*): use parseHeaders() to ensure header-values are not 'undefined' #4540
2828
* Fixes a bug where passing `undefined` as a header value would crash the end-user app after the export timeout elapsed.
29+
* fix(sdk-logs): ensure default resource attributes are used as fallbacks when a resource is passed to LoggerProvider.
2930

3031
### :books: (Refine Doc)
3132

experimental/packages/sdk-logs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const logger = logsAPI.logs.getLogger('default');
4646

4747
// emit a log record
4848
logger.emit({
49-
severityNumber: SeverityNumber.INFO,
49+
severityNumber: logsAPI.SeverityNumber.INFO,
5050
severityText: 'INFO',
5151
body: 'this is a log record body',
5252
attributes: { 'log.type': 'LogRecord' },

experimental/packages/sdk-logs/src/LoggerProvider.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,14 @@ export class LoggerProvider implements logsAPI.LoggerProvider {
3333
private readonly _sharedState: LoggerProviderSharedState;
3434

3535
constructor(config: LoggerProviderConfig = {}) {
36-
const {
37-
resource = Resource.default(),
38-
logRecordLimits,
39-
forceFlushTimeoutMillis,
40-
} = merge({}, loadDefaultConfig(), config);
36+
const mergedConfig = merge({}, loadDefaultConfig(), config);
37+
const resource = Resource.default().merge(
38+
mergedConfig.resource ?? Resource.empty()
39+
);
4140
this._sharedState = new LoggerProviderSharedState(
4241
resource,
43-
forceFlushTimeoutMillis,
44-
reconfigureLimits(logRecordLimits)
42+
mergedConfig.forceFlushTimeoutMillis,
43+
reconfigureLimits(mergedConfig.logRecordLimits)
4544
);
4645
this._shutdownOnce = new BindOnceFuture(this._shutdown, this);
4746
}

experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ describe('LoggerProvider', () => {
6363
assert.deepStrictEqual(resource, Resource.default());
6464
});
6565

66+
it('should fallback to default resource attrs', () => {
67+
const passedInResource = new Resource({ foo: 'bar' });
68+
const provider = new LoggerProvider({ resource: passedInResource });
69+
const { resource } = provider['_sharedState'];
70+
assert.deepStrictEqual(
71+
resource,
72+
Resource.default().merge(passedInResource)
73+
);
74+
});
75+
6676
it('should have default forceFlushTimeoutMillis if not pass', () => {
6777
const provider = new LoggerProvider();
6878
const sharedState = provider['_sharedState'];

0 commit comments

Comments
 (0)