UNPKG

@rollercoaster-dev/rd-logger

Version:

A neurodivergent-friendly logger for Rollercoaster.dev projects

81 lines (80 loc) 2.7 kB
import type { Request, Response, RequestHandler, ErrorRequestHandler } from 'express'; import { Logger } from '../core/logger.service'; import { type LoggerConfig } from '../core/logger.config'; declare global { namespace Express { interface Request { id?: string; } } } export interface ExpressLoggerOptions { /** * An existing Logger instance to use. * If not provided, a new Logger will be created with the options below. */ loggerInstance?: Logger; /** * Configuration options for the Logger. * Ignored if loggerInstance is provided. */ loggerOptions?: Partial<LoggerConfig>; /** * Function to determine if a request should be skipped for logging. * @param req Express request * @param res Express response * @returns true to skip logging, false otherwise */ skip?: (req: Request, res: Response) => boolean; /** * Customize the log message for incoming requests. * @param req Express request * @param store Request context store * @returns Log message string */ requestMessage?: (req: Request, store: { requestId: string; }) => string; /** * Customize the log message for completed requests. * @param req Express request * @param res Express response * @param store Request context store * @param duration Request duration in ms * @param status Response status code * @returns Log message string */ responseMessage?: (req: Request, res: Response, store: { requestId: string; }, duration: number, status: number) => string; } /** * Express middleware for neuro-friendly logging and request context management. * * @param options Configuration options for the logger middleware. * @returns Express RequestHandler. */ export declare const expressLogger: (options?: ExpressLoggerOptions) => RequestHandler; /** * Express error handling middleware that logs errors using the logger and request context. * * Place this AFTER your routes and other middleware, but BEFORE the default Express error handler. * * Usage: * ```typescript * import express from 'express'; * import { expressLogger, expressErrorHandler } from './path/to/expressAdapter'; * import { Logger } from './path/to/logger'; * * const app = express(); * const logger = new Logger(); * * app.use(expressLogger({ loggerInstance: logger })); * // ... routes ... * app.use(expressErrorHandler(logger)); * ``` * * @param loggerInstance An instance of the Logger. * @returns Express ErrorRequestHandler. */ export declare const expressErrorHandler: (loggerInstance: Logger) => ErrorRequestHandler;