feat: Enhance logging and type safety across various components and services
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Has been cancelled
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Has been cancelled
This commit is contained in:
17
server.ts
17
server.ts
@@ -80,6 +80,21 @@ const getDurationInMilliseconds = (start: [number, number]): number => {
|
||||
return (diff[0] * NS_PER_SEC + diff[1]) / NS_TO_MS;
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines the structure for the detailed log object created for each request.
|
||||
* This ensures type safety and consistency in our structured logs.
|
||||
*/
|
||||
interface RequestLogDetails {
|
||||
user_id?: string;
|
||||
method: string;
|
||||
originalUrl: string;
|
||||
statusCode: number;
|
||||
statusMessage: string;
|
||||
duration: string;
|
||||
// The 'req' property is added conditionally for client/server errors.
|
||||
req?: { headers: express.Request['headers']; body: express.Request['body'] };
|
||||
}
|
||||
|
||||
const requestLogger = (req: Request, res: Response, next: NextFunction) => {
|
||||
const requestId = randomUUID();
|
||||
const user = req.user as UserProfile | undefined;
|
||||
@@ -102,7 +117,7 @@ const requestLogger = (req: Request, res: Response, next: NextFunction) => {
|
||||
const finalUser = req.user as UserProfile | undefined;
|
||||
|
||||
// The base log object includes details relevant for all status codes.
|
||||
const logDetails: Record<string, any> = {
|
||||
const logDetails: RequestLogDetails = {
|
||||
user_id: finalUser?.user_id,
|
||||
method,
|
||||
originalUrl,
|
||||
|
||||
Reference in New Issue
Block a user