diff --git a/packages/core/src/logs/internal.ts b/packages/core/src/logs/internal.ts index 601d9be29cb6..819c51c7e3f1 100644 --- a/packages/core/src/logs/internal.ts +++ b/packages/core/src/logs/internal.ts @@ -91,14 +91,16 @@ function setLogAttribute( */ export function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void { const bufferMap = _getBufferMap(); - const logBuffer = _INTERNAL_getLogBuffer(client); + if (logBuffer === undefined) { bufferMap.set(client, [serializedLog]); } else { - bufferMap.set(client, [...logBuffer, serializedLog]); if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) { _INTERNAL_flushLogsBuffer(client, logBuffer); + bufferMap.set(client, [serializedLog]); + } else { + bufferMap.set(client, [...logBuffer, serializedLog]); } } } diff --git a/packages/core/test/lib/logs/internal.test.ts b/packages/core/test/lib/logs/internal.test.ts index dbb2966dc076..563139aba36d 100644 --- a/packages/core/test/lib/logs/internal.test.ts +++ b/packages/core/test/lib/logs/internal.test.ts @@ -259,7 +259,10 @@ describe('_INTERNAL_captureLog', () => { // Add one more to trigger flush _INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, scope); - expect(_INTERNAL_getLogBuffer(client)).toEqual([]); + // After flushing the 100 logs, the new log starts a fresh buffer with 1 item + const buffer = _INTERNAL_getLogBuffer(client); + expect(buffer).toHaveLength(1); + expect(buffer?.[0]?.body).toBe('trigger flush'); }); it('does not flush logs buffer when it is empty', () => {