UNPKG

@rollercoaster-dev/rd-logger

Version:

A neurodivergent-friendly logger for Rollercoaster.dev projects

68 lines (67 loc) 2.08 kB
import { Logger } from './logger.service'; export interface QueryLogEntry { query: string; params?: any[]; duration: number; timestamp: string; database?: string; requestId?: string; } export interface QueryLoggerConfig { enabled: boolean; slowQueryThreshold: number; maxLogs: number; logDebugQueries: boolean; } export declare const DEFAULT_QUERY_LOGGER_CONFIG: QueryLoggerConfig; /** * Logs database queries and identifies slow ones. */ export declare class QueryLogger { private logs; private config; private logger; constructor(logger: Logger, options?: Partial<QueryLoggerConfig>); /** * Logs a query execution. * @param query The SQL query string. * @param params Query parameters (optional). * @param duration Query execution duration in milliseconds. * @param database Optional database type/name. * @param requestId Optional associated request ID. */ logQuery(query: string, params: any[] | undefined, duration: number, database?: string, requestId?: string): void; /** * Gets all logged queries. * @returns Array of query log entries. */ getLogs(): QueryLogEntry[]; /** * Gets slow queries (queries that took longer than the configured threshold). * @param threshold Optional custom threshold in milliseconds to override config for this call. * @returns Array of slow query log entries. */ getSlowQueries(threshold?: number): QueryLogEntry[]; /** * Clears all stored logs. */ clearLogs(): void; /** * Updates the query logger's configuration dynamically. * @param options Partial configuration options to update. */ configure(options: Partial<QueryLoggerConfig>): void; /** * Gets query statistics. */ getStats(): { totalQueries: number; slowQueries: number; averageDuration: number; maxDuration: number; byDatabase: Record<string, { count: number; avgDuration: number; }>; }; }