Skip to content

Commit 0808373

Browse files
authored
feat(@opentelemetry/sdk-logs): align LoggerProvider constructor options with Trace and Metrics SDK (#5588)
Signed-off-by: Matéo Fernandez <[email protected]>
1 parent 54e039c commit 0808373

File tree

18 files changed

+90
-86
lines changed

18 files changed

+90
-86
lines changed

experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,15 @@ describe('OTLPLogExporter', function () {
7878

7979
it('successfully exports data', async () => {
8080
// arrange
81-
const loggerProvider = new LoggerProvider();
82-
loggerProvider.addLogRecordProcessor(
83-
new SimpleLogRecordProcessor(
84-
new OTLPLogExporter({
85-
url: 'http://localhost:1503',
86-
})
87-
)
88-
);
81+
const loggerProvider = new LoggerProvider({
82+
processors: [
83+
new SimpleLogRecordProcessor(
84+
new OTLPLogExporter({
85+
url: 'http://localhost:1503',
86+
})
87+
),
88+
],
89+
});
8990

9091
// act
9192
loggerProvider.getLogger('test-logger').emit({

experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ describe('OTLPLogExporter', function () {
3939
it('should successfully send data using sendBeacon', async function () {
4040
// arrange
4141
const stubBeacon = sinon.stub(navigator, 'sendBeacon');
42-
const loggerProvider = new LoggerProvider();
43-
loggerProvider.addLogRecordProcessor(
44-
new SimpleLogRecordProcessor(new OTLPLogExporter())
45-
);
42+
const loggerProvider = new LoggerProvider({
43+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
44+
});
4645

4746
// act
4847
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });
@@ -68,10 +67,9 @@ describe('OTLPLogExporter', function () {
6867
it('should successfully send data using XMLHttpRequest', async function () {
6968
// arrange
7069
const server = sinon.fakeServer.create();
71-
const loggerProvider = new LoggerProvider();
72-
loggerProvider.addLogRecordProcessor(
73-
new SimpleLogRecordProcessor(new OTLPLogExporter())
74-
);
70+
const loggerProvider = new LoggerProvider({
71+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
72+
});
7573

7674
// act
7775
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });

experimental/packages/exporter-logs-otlp-http/test/node/OTLPLogExporter.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,9 @@ describe('OTLPLogExporter', () => {
6262
buff = Buffer.concat([buff, chunk]);
6363
});
6464

65-
const loggerProvider = new LoggerProvider();
66-
loggerProvider.addLogRecordProcessor(
67-
new SimpleLogRecordProcessor(new OTLPLogExporter())
68-
);
65+
const loggerProvider = new LoggerProvider({
66+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
67+
});
6968

7069
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });
7170
loggerProvider.shutdown();

experimental/packages/exporter-logs-otlp-proto/test/browser/OTLPLogExporter.test.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ describe('OTLPLogExporter', function () {
3939
it('should successfully send data using sendBeacon', async function () {
4040
// arrange
4141
const stubBeacon = sinon.stub(navigator, 'sendBeacon');
42-
const loggerProvider = new LoggerProvider();
43-
loggerProvider.addLogRecordProcessor(
44-
new SimpleLogRecordProcessor(new OTLPLogExporter())
45-
);
42+
const loggerProvider = new LoggerProvider({
43+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
44+
});
4645

4746
// act
4847
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });
@@ -68,10 +67,9 @@ describe('OTLPLogExporter', function () {
6867
it('should successfully send data using XMLHttpRequest', async function () {
6968
// arrange
7069
const server = sinon.fakeServer.create();
71-
const loggerProvider = new LoggerProvider();
72-
loggerProvider.addLogRecordProcessor(
73-
new SimpleLogRecordProcessor(new OTLPLogExporter())
74-
);
70+
const loggerProvider = new LoggerProvider({
71+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
72+
});
7573

7674
// act
7775
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });

experimental/packages/exporter-logs-otlp-proto/test/node/OTLPLogExporter.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,9 @@ describe('OTLPLogExporter', () => {
6262
buff = Buffer.concat([buff, chunk]);
6363
});
6464

65-
const loggerProvider = new LoggerProvider();
66-
loggerProvider.addLogRecordProcessor(
67-
new SimpleLogRecordProcessor(new OTLPLogExporter())
68-
);
65+
const loggerProvider = new LoggerProvider({
66+
processors: [new SimpleLogRecordProcessor(new OTLPLogExporter())],
67+
});
6968

7069
loggerProvider.getLogger('test-logger').emit({ body: 'test-body' });
7170
loggerProvider.shutdown();

experimental/packages/opentelemetry-sdk-node/src/sdk.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -385,13 +385,9 @@ export class NodeSDK {
385385
if (this._loggerProviderConfig) {
386386
const loggerProvider = new LoggerProvider({
387387
resource: this._resource,
388+
processors: this._loggerProviderConfig.logRecordProcessors,
388389
});
389390

390-
for (const logRecordProcessor of this._loggerProviderConfig
391-
.logRecordProcessors) {
392-
loggerProvider.addLogRecordProcessor(logRecordProcessor);
393-
}
394-
395391
this._loggerProvider = loggerProvider;
396392

397393
logs.setGlobalLoggerProvider(loggerProvider);

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import { defaultResource } from '@opentelemetry/resources';
2020
import { BindOnceFuture, merge } from '@opentelemetry/core';
2121

2222
import type { LoggerProviderConfig } from './types';
23-
import type { LogRecordProcessor } from './LogRecordProcessor';
2423
import { Logger } from './Logger';
2524
import { loadDefaultConfig, reconfigureLimits } from './config';
26-
import { MultiLogRecordProcessor } from './MultiLogRecordProcessor';
2725
import { LoggerProviderSharedState } from './internal/LoggerProviderSharedState';
26+
import { LogRecordProcessor } from './LogRecordProcessor';
27+
import { MultiLogRecordProcessor } from './MultiLogRecordProcessor';
2828

2929
export const DEFAULT_LOGGER_NAME = 'unknown';
3030

@@ -38,7 +38,8 @@ export class LoggerProvider implements logsAPI.LoggerProvider {
3838
this._sharedState = new LoggerProviderSharedState(
3939
resource,
4040
mergedConfig.forceFlushTimeoutMillis,
41-
reconfigureLimits(mergedConfig.logRecordLimits)
41+
reconfigureLimits(mergedConfig.logRecordLimits),
42+
config?.processors ?? []
4243
);
4344
this._shutdownOnce = new BindOnceFuture(this._shutdown, this);
4445
}
@@ -75,6 +76,8 @@ export class LoggerProvider implements logsAPI.LoggerProvider {
7576
}
7677

7778
/**
79+
* @deprecated add your processors in the constructors instead.
80+
*
7881
* Adds a new {@link LogRecordProcessor} to this logger.
7982
* @param processor the new LogRecordProcessor to be added.
8083
*/

experimental/packages/sdk-logs/src/internal/LoggerProviderSharedState.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { Resource } from '@opentelemetry/resources';
1919
import { LogRecordProcessor } from '../LogRecordProcessor';
2020
import { LogRecordLimits } from '../types';
2121
import { NoopLogRecordProcessor } from '../export/NoopLogRecordProcessor';
22+
import { MultiLogRecordProcessor } from '../MultiLogRecordProcessor';
2223

2324
export class LoggerProviderSharedState {
2425
readonly loggers: Map<string, Logger> = new Map();
@@ -28,8 +29,17 @@ export class LoggerProviderSharedState {
2829
constructor(
2930
readonly resource: Resource,
3031
readonly forceFlushTimeoutMillis: number,
31-
readonly logRecordLimits: Required<LogRecordLimits>
32+
readonly logRecordLimits: Required<LogRecordLimits>,
33+
readonly processors: LogRecordProcessor[]
3234
) {
33-
this.activeProcessor = new NoopLogRecordProcessor();
35+
if (processors.length > 0) {
36+
this.registeredLogRecordProcessors = processors;
37+
this.activeProcessor = new MultiLogRecordProcessor(
38+
this.registeredLogRecordProcessors,
39+
this.forceFlushTimeoutMillis
40+
);
41+
} else {
42+
this.activeProcessor = new NoopLogRecordProcessor();
43+
}
3444
}
3545
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import type { Resource } from '@opentelemetry/resources';
18+
import { LogRecordProcessor } from './LogRecordProcessor';
1819

1920
export interface LoggerProviderConfig {
2021
/** Resource associated with trace telemetry */
@@ -28,6 +29,9 @@ export interface LoggerProviderConfig {
2829

2930
/** Log Record Limits*/
3031
logRecordLimits?: LogRecordLimits;
32+
33+
/** Log Record Processors */
34+
processors?: LogRecordProcessor[];
3135
}
3236

3337
export interface LogRecordLimits {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ const setup = (logRecordLimits?: LogRecordLimits, data?: logsAPI.LogRecord) => {
5151
const sharedState = new LoggerProviderSharedState(
5252
resource,
5353
Infinity,
54-
reconfigureLimits(logRecordLimits ?? {})
54+
reconfigureLimits(logRecordLimits ?? {}),
55+
[]
5556
);
5657
const logRecord = new LogRecord(
5758
sharedState,
@@ -424,8 +425,7 @@ describe('LogRecord', () => {
424425
forceFlush: () => Promise.resolve(),
425426
shutdown: () => Promise.resolve(),
426427
};
427-
const provider = new LoggerProvider();
428-
provider.addLogRecordProcessor(processor);
428+
const provider = new LoggerProvider({ processors: [processor] });
429429
provider.getLogger('default').emit({ body: 'test' });
430430
assert.ok(emitted);
431431
});

0 commit comments

Comments
 (0)