@nxtwebmasters/nxt-smart-logger
Version:
A configurable smart logger for web apps that supports server and Google Tag Manager (GTM) logging with user/session context.
57 lines (56 loc) • 1.58 kB
TypeScript
declare global {
interface Window {
dataLayer?: any[];
}
}
export interface StructuredLog {
timestamp: string;
level: string;
message: string;
tags?: string[];
context: Record<string, any>;
meta: {
url: string;
userAgent?: string;
traceId?: string;
sessionId?: string;
[key: string]: any;
};
data?: any;
}
export declare class ConsoleInterceptor {
private logQueue;
private batchSize;
private flushInterval;
private enableGTM;
private enableServer;
private contextProvider;
private serverLogger;
private originalConsole;
private customLevels;
private logger;
private defaultSessionId;
private generateTraceId;
private persistentContext;
private persistentTags;
constructor(options?: {
batchSize?: number;
flushInterval?: number;
enableGTM?: boolean;
enableServer?: boolean;
contextProvider?: () => Record<string, any>;
serverLogger?: (logs: StructuredLog[]) => Promise<void>;
customLevels?: string[];
generateTraceId?: () => string;
filterLevels?: string[];
});
overrideConsole(): void;
setupCustomLogger(): void;
setContext(ctx: Record<string, any>): void;
clearContext(): void;
clearTags(): void;
getLogger(): Record<string, any>;
enqueueLog(level: string, args: any[], tags?: string[], extraContext?: Record<string, any>, extraMeta?: Record<string, any>): void;
setupFlushInterval(): void;
flushLogs(): Promise<void>;
}