feat(sdk-logs)!: Removed deprecated `LoggerProvider#addLogRecordProcessor()` (#5764)

This commit is contained in:
Svetlana Brennan 2025-06-30 02:41:53 -05:00 committed by GitHub
parent e18a6c8456
commit 491ed96aca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 42 additions and 65 deletions

View File

@ -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

View File

@ -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);

View File

@ -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));

View File

@ -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

View File

@ -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');

View File

@ -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');

View File

@ -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.
*

View File

@ -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();