diff --git a/packages/core/src/logs/exports.ts b/packages/core/src/logs/exports.ts index 6a921d6f6053..9212050726dc 100644 --- a/packages/core/src/logs/exports.ts +++ b/packages/core/src/logs/exports.ts @@ -90,14 +90,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/exports.test.ts b/packages/core/test/lib/logs/exports.test.ts index 4fd01a16a304..cc99b801769c 100644 --- a/packages/core/test/lib/logs/exports.test.ts +++ b/packages/core/test/lib/logs/exports.test.ts @@ -245,7 +245,10 @@ describe('_INTERNAL_captureLog', () => { // Add one more to trigger flush _INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, client, undefined); - 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', () => {