diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index ef16fdda40..064635e52d 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -109,8 +109,9 @@ export class PinoInstrumentation extends InstrumentationBase { }); }); + it('emits log records to a lower level after level change', () => { + const logRecords = memExporter.getFinishedLogRecords(); + + logger.debug('first msg at debug'); + logger.trace('first msg at trace'); // Should *not* see this. + + logger.level = 'trace'; + logger.debug('second msg at debug'); + logger.trace('second msg at trace'); // *Should* see this. + + assert.strictEqual(logRecords.length, 3); + assert.strictEqual(logRecords[0].severityNumber, SeverityNumber.DEBUG); + assert.strictEqual(logRecords[0].severityText, 'debug'); + assert.strictEqual(logRecords[0].body, 'first msg at debug'); + assert.strictEqual(logRecords[1].severityNumber, SeverityNumber.DEBUG); + assert.strictEqual(logRecords[1].severityText, 'debug'); + assert.strictEqual(logRecords[1].body, 'second msg at debug'); + assert.strictEqual(logRecords[2].severityNumber, SeverityNumber.TRACE); + assert.strictEqual(logRecords[2].severityText, 'trace'); + assert.strictEqual(logRecords[2].body, 'second msg at trace'); + }); + + it('emits log records from child logger at lower level', () => { + const logRecords = memExporter.getFinishedLogRecords(); + + const child = logger.child({ childField: 42 }, { level: 'trace' }); + + logger.debug('logger at debug level'); + logger.trace('logger at trace level'); // Should *not* see this one. + child.debug('child at debug level'); + child.trace('child at trace level'); // *Should* see this one. + assert.strictEqual(logRecords.length, 3); + assert.strictEqual(logRecords[0].severityNumber, SeverityNumber.DEBUG); + assert.strictEqual(logRecords[0].severityText, 'debug'); + assert.strictEqual(logRecords[0].body, 'logger at debug level'); + assert.strictEqual(logRecords[1].severityNumber, SeverityNumber.DEBUG); + assert.strictEqual(logRecords[1].severityText, 'debug'); + assert.strictEqual(logRecords[1].body, 'child at debug level'); + assert.strictEqual(logRecords[2].severityNumber, SeverityNumber.TRACE); + assert.strictEqual(logRecords[2].severityText, 'trace'); + assert.strictEqual(logRecords[2].body, 'child at trace level'); + }); + it('does not emit to the Logs SDK if disableLogSending=true', () => { instrumentation.setConfig({ disableLogSending: true });