@rollercoaster-dev/rd-logger
Version:
A neurodivergent-friendly logger for Rollercoaster.dev projects
68 lines (67 loc) • 2.08 kB
TypeScript
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;
}>;
};
}