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