Skip to content

Commit c391831

Browse files
committed
Added log tagging.
1 parent 85f5f4f commit c391831

File tree

5 files changed

+50
-7
lines changed

5 files changed

+50
-7
lines changed

src/logger/logger.interfaces.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { RawAxiosResponseHeaders } from 'axios';
2-
import { AirdropEvent, EventContext } from '../types/extraction';
3-
import { WorkerAdapterOptions } from '../types/workers';
1+
import type { RawAxiosResponseHeaders } from 'axios';
2+
import type { AirdropEvent, EventContext } from '../types/extraction';
3+
import type { WorkerAdapterOptions } from '../types/workers';
44

55
export interface LoggerFactoryInterface {
66
event: AirdropEvent;
@@ -48,4 +48,5 @@ export interface AxiosErrorResponse {
4848

4949
export interface LoggerTags extends EventContext {
5050
sdk_version: string;
51+
sdk_log: boolean;
5152
}

src/logger/logger.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createEvent } from '../tests/test-helpers';
55
import { AirdropEvent, EventType } from '../types/extraction';
66
import { WorkerAdapterOptions } from '../types/workers';
77
import { getPrintableState, Logger, serializeAxiosError } from './logger';
8+
import { LogLevel } from './logger.interfaces';
89
import {
910
INSPECT_OPTIONS as EXPECTED_INSPECT_OPTIONS,
1011
MAX_LOG_STRING_LENGTH,
@@ -67,6 +68,7 @@ describe(Logger.name, () => {
6768
expect(tags).toEqual({
6869
...mockEvent.payload.event_context,
6970
sdk_version: LIBRARY_VERSION,
71+
sdk_log: true,
7072
});
7173
});
7274

@@ -84,6 +86,7 @@ describe(Logger.name, () => {
8486
message,
8587
...mockEvent.payload.event_context,
8688
sdk_version: LIBRARY_VERSION,
89+
sdk_log: true,
8790
})
8891
);
8992
});
@@ -103,6 +106,7 @@ describe(Logger.name, () => {
103106
message: expectedMessage,
104107
...mockEvent.payload.event_context,
105108
sdk_version: LIBRARY_VERSION,
109+
sdk_log: true,
106110
})
107111
);
108112
});
@@ -123,6 +127,7 @@ describe(Logger.name, () => {
123127
message: `${text} ${expectedDataMessage}`,
124128
...mockEvent.payload.event_context,
125129
sdk_version: LIBRARY_VERSION,
130+
sdk_log: true,
126131
})
127132
);
128133
});
@@ -144,6 +149,22 @@ describe(Logger.name, () => {
144149
message: `${text1} ${expectedDataMessage} ${text2}`,
145150
...mockEvent.payload.event_context,
146151
sdk_version: LIBRARY_VERSION,
152+
sdk_log: true,
153+
})
154+
);
155+
});
156+
157+
it('should set sdk_log to false for worker thread logs', () => {
158+
const logger = new Logger({ event: mockEvent, options: mockOptions });
159+
160+
logger.logFn('Worker log', LogLevel.INFO, false);
161+
162+
expect(mockConsoleInfo).toHaveBeenCalledWith(
163+
JSON.stringify({
164+
message: 'Worker log',
165+
...mockEvent.payload.event_context,
166+
sdk_version: LIBRARY_VERSION,
167+
sdk_log: false,
147168
})
148169
);
149170
});
@@ -347,6 +368,7 @@ describe(Logger.name, () => {
347368
const logObject = JSON.parse(callArgs);
348369
expect(logObject.message).toBe('');
349370
expect(logObject.sdk_version).toBe(LIBRARY_VERSION);
371+
expect(logObject.sdk_log).toBe(true);
350372
});
351373

352374
it('[edge] should handle null and undefined values in log arguments', () => {

src/logger/logger.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class Logger extends Console {
3333
this.tags = {
3434
...event.payload.event_context,
3535
sdk_version: LIBRARY_VERSION,
36+
sdk_log: true,
3637
};
3738
}
3839

@@ -73,8 +74,9 @@ export class Logger extends Console {
7374
*
7475
* @param message - The pre-formatted message string to log
7576
* @param level - Log level (info, warn, error)
77+
* @param sdkLog - Flag indicating if the log originated from the SDK
7678
*/
77-
logFn(message: string, level: LogLevel): void {
79+
logFn(message: string, level: LogLevel, sdkLog: boolean = this.tags.sdk_log): void {
7880
if (this.options?.isLocalDevelopment) {
7981
this.originalConsole[level](message);
8082
return;
@@ -83,6 +85,7 @@ export class Logger extends Console {
8385
const logObject = {
8486
message,
8587
...this.tags,
88+
sdk_log: sdkLog,
8689
};
8790
this.originalConsole[level](JSON.stringify(logObject));
8891
}
@@ -105,7 +108,7 @@ export class Logger extends Console {
105108
} else {
106109
parentPort?.postMessage({
107110
subject: WorkerMessageSubject.WorkerMessageLog,
108-
payload: { stringifiedArgs, level },
111+
payload: { stringifiedArgs, level, sdk_log: false },
109112
});
110113
}
111114
}

src/types/workers.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Worker } from 'worker_threads';
22

3+
import type { LogLevel } from '../logger/logger.interfaces';
34
import { State } from '../state/state';
45
import { WorkerAdapter } from '../workers/worker-adapter';
56

@@ -131,10 +132,25 @@ export interface WorkerMessageExit {
131132
subject: WorkerMessageSubject.WorkerMessageExit;
132133
}
133134

135+
/**
136+
* WorkerMessageLog interface represents the structure of the worker log message.
137+
*/
138+
export interface WorkerMessageLog {
139+
subject: WorkerMessageSubject.WorkerMessageLog;
140+
payload: {
141+
stringifiedArgs: string;
142+
level: LogLevel;
143+
sdk_log?: boolean;
144+
};
145+
}
146+
134147
/**
135148
* WorkerMessage represents the structure of the worker message.
136149
*/
137-
export type WorkerMessage = WorkerMessageEmitted | WorkerMessageExit;
150+
export type WorkerMessage =
151+
| WorkerMessageEmitted
152+
| WorkerMessageExit
153+
| WorkerMessageLog;
138154

139155
/**
140156
* WorkerData represents the structure of the worker data object.

src/workers/spawn.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,9 @@ export class Spawn {
246246
if (message?.subject === WorkerMessageSubject.WorkerMessageLog) {
247247
const stringifiedArgs = message.payload?.stringifiedArgs;
248248
const level = message.payload?.level as LogLevel;
249+
const sdkLog = message.payload?.sdk_log ?? false;
249250
// Args are already sanitized in the worker thread, skip double sanitization
250-
(console as Logger).logFn(stringifiedArgs, level);
251+
(console as Logger).logFn(stringifiedArgs, level, sdkLog);
251252
}
252253

253254
// If worker sends a message that it has emitted an event, then set alreadyEmitted to true.

0 commit comments

Comments
 (0)