diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 6216c63e1c3..128cddebd6b 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -8,6 +8,8 @@ For notes on migrating to 2.x / 0.200.x see [the upgrade guide](doc/upgrade-to-2 ### :boom: Breaking Changes +* feat(sdk-logs)!: Removed deprecated LoggerProvider#addLogRecordProcessor() [#5764](https://github.com/open-telemetry/opentelemetry-js/pull/5764) @svetlanabrennan + ### :rocket: Features ### :bug: Bug Fixes diff --git a/experimental/examples/logs/index.ts b/experimental/examples/logs/index.ts index 4579f328351..f1dfe398f00 100644 --- a/experimental/examples/logs/index.ts +++ b/experimental/examples/logs/index.ts @@ -25,10 +25,13 @@ import { // Optional and only needed to see the internal diagnostic logging (during development) diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG); -const loggerProvider = new LoggerProvider(); -loggerProvider.addLogRecordProcessor( - new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()) -); +const loggerProvider = new LoggerProvider({ + processors: [ + new SimpleLogRecordProcessor( + new ConsoleLogRecordExporter() + ) + ], +}); logs.setGlobalLoggerProvider(loggerProvider); diff --git a/experimental/packages/exporter-logs-otlp-grpc/README.md b/experimental/packages/exporter-logs-otlp-grpc/README.md index f4bf1f259ad..0c7beff3975 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/README.md +++ b/experimental/packages/exporter-logs-otlp-grpc/README.md @@ -39,11 +39,9 @@ const collectorOptions = { }; const loggerExporter = new OTLPLogExporter(collectorOptions); -const loggerProvider = new LoggerProvider(); - -loggerProvider.addLogRecordProcessor( - new BatchLogRecordProcessor(loggerExporter) -); +const loggerProvider = new LoggerProvider({ + processors: [new BatchRecordProcessor(loggerExporter)] +}); ['SIGINT', 'SIGTERM'].forEach(signal => { process.on(signal, () => loggerProvider.shutdown().catch(console.error)); diff --git a/experimental/packages/exporter-logs-otlp-http/README.md b/experimental/packages/exporter-logs-otlp-http/README.md index da43e1e74f4..24fb3bd1e04 100644 --- a/experimental/packages/exporter-logs-otlp-http/README.md +++ b/experimental/packages/exporter-logs-otlp-http/README.md @@ -37,9 +37,9 @@ const collectorOptions = { concurrencyLimit: 1, // an optional limit on pending requests }; const logExporter = new OTLPLogExporter(collectorOptions); -const loggerProvider = new LoggerProvider(); - -loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter)); +const loggerProvider = new LoggerProvider({ + processors: [new BatchRecordProcessor(logExporter)] +}); const logger = loggerProvider.getLogger('default', '1.0.0'); // Emit a log @@ -66,9 +66,9 @@ const collectorOptions = { concurrencyLimit: 1, // an optional limit on pending requests }; const logExporter = new OTLPLogExporter(collectorOptions); -const loggerProvider = new LoggerProvider(); - -loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter)); +const loggerProvider = new LoggerProvider({ + processors: [new BatchRecordProcessor(logExporter)] +}); const logger = loggerProvider.getLogger('default', '1.0.0'); // Emit a log diff --git a/experimental/packages/exporter-logs-otlp-proto/README.md b/experimental/packages/exporter-logs-otlp-proto/README.md index 99d7a022e84..55b0f903b38 100644 --- a/experimental/packages/exporter-logs-otlp-proto/README.md +++ b/experimental/packages/exporter-logs-otlp-proto/README.md @@ -31,9 +31,11 @@ const collectorOptions = { }, //an optional object containing custom headers to be sent with each request will only work with http }; -const logProvider = new LoggerProvider({resource: resourceFromAttributes({'service.name': 'testApp'})}); const logExporter = new OTLPLogExporter(collectorOptions); -logProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(exporter)); +const logProvider = new LoggerProvider({ + resource: resourceFromAttributes({'service.name': 'testApp'}), + processors: [new SimpleLogRecordProcessor(logExporter)] + }); const logger = logProvider.getLogger('test_log_instrumentation'); diff --git a/experimental/packages/sdk-logs/README.md b/experimental/packages/sdk-logs/README.md index 5136bab22c9..8172cede2aa 100644 --- a/experimental/packages/sdk-logs/README.md +++ b/experimental/packages/sdk-logs/README.md @@ -31,11 +31,10 @@ const { } = require('@opentelemetry/sdk-logs'); // To start a logger, you first need to initialize the Logger provider. -const loggerProvider = new LoggerProvider(); -// Add a processor to export log record -loggerProvider.addLogRecordProcessor( - new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()) -); +// and add a processor to export log record +const loggerProvider = new LoggerProvider({ + processors: [new SimpleLogRecordProcessor(new ConsoleLogRecordExporter())] +}); // To create a log record, you first need to get a Logger instance const logger = loggerProvider.getLogger('default'); diff --git a/experimental/packages/sdk-logs/src/LoggerProvider.ts b/experimental/packages/sdk-logs/src/LoggerProvider.ts index d621b65613c..517e2a102ae 100644 --- a/experimental/packages/sdk-logs/src/LoggerProvider.ts +++ b/experimental/packages/sdk-logs/src/LoggerProvider.ts @@ -23,8 +23,6 @@ import type { LoggerProviderConfig } from './types'; import { Logger } from './Logger'; import { loadDefaultConfig, reconfigureLimits } from './config'; import { LoggerProviderSharedState } from './internal/LoggerProviderSharedState'; -import { LogRecordProcessor } from './LogRecordProcessor'; -import { MultiLogRecordProcessor } from './MultiLogRecordProcessor'; export const DEFAULT_LOGGER_NAME = 'unknown'; @@ -75,32 +73,6 @@ export class LoggerProvider implements logsAPI.LoggerProvider { return this._sharedState.loggers.get(key)!; } - /** - * @deprecated add your processors in the constructors instead. - * - * Adds a new {@link LogRecordProcessor} to this logger. - * @param processor the new LogRecordProcessor to be added. - */ - public addLogRecordProcessor(processor: LogRecordProcessor) { - if (this._sharedState.registeredLogRecordProcessors.length === 0) { - // since we might have enabled by default a batchProcessor, we disable it - // before adding the new one - this._sharedState.activeProcessor - .shutdown() - .catch(err => - diag.error( - 'Error while trying to shutdown current log record processor', - err - ) - ); - } - this._sharedState.registeredLogRecordProcessors.push(processor); - this._sharedState.activeProcessor = new MultiLogRecordProcessor( - this._sharedState.registeredLogRecordProcessors, - this._sharedState.forceFlushTimeoutMillis - ); - } - /** * Notifies all registered LogRecordProcessor to flush any buffered data. * diff --git a/experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts b/experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts index aebdd764a48..b64af2bbe1e 100644 --- a/experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts +++ b/experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts @@ -52,6 +52,22 @@ describe('LoggerProvider', () => { assert.ok(processor instanceof NoopLogRecordProcessor); }); + it('should add logRecord processor', () => { + const logRecordProcessor = new NoopLogRecordProcessor(); + const provider = new LoggerProvider({ + processors: [logRecordProcessor], + }); + const sharedState = provider['_sharedState']; + assert.ok( + sharedState.activeProcessor instanceof MultiLogRecordProcessor + ); + assert.strictEqual(sharedState.activeProcessor.processors.length, 1); + assert.strictEqual( + sharedState.activeProcessor.processors[0], + logRecordProcessor + ); + }); + it('should have default resource if not pass', () => { const provider = new LoggerProvider(); const { resource } = provider['_sharedState']; @@ -201,21 +217,6 @@ describe('LoggerProvider', () => { }); }); - describe('addLogRecordProcessor', () => { - it('should add logRecord processor', () => { - const provider = new LoggerProvider(); - const sharedState = provider['_sharedState']; - const logRecordProcessor = new NoopLogRecordProcessor(); - provider.addLogRecordProcessor(logRecordProcessor); - assert.ok(sharedState.activeProcessor instanceof MultiLogRecordProcessor); - assert.strictEqual(sharedState.activeProcessor.processors.length, 1); - assert.strictEqual( - sharedState.activeProcessor.processors[0], - logRecordProcessor - ); - }); - }); - describe('.forceFlush()', () => { it('should call forceFlush on all registered log record processors', done => { sinon.restore();