From 9bcbc1e7f3a5185eed2146f4f3502542b0bebd01 Mon Sep 17 00:00:00 2001 From: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com> Date: Thu, 18 Jan 2024 15:49:01 +0000 Subject: [PATCH] Add http logging for express --- packages/controller/package.json | 1 + packages/controller/src/Controller.ts | 8 ++++++++ packages/lib/src/logging.ts | 7 +++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/controller/package.json b/packages/controller/package.json index 042a53ad..1a1e6365 100644 --- a/packages/controller/package.json +++ b/packages/controller/package.json @@ -30,6 +30,7 @@ "set-blocking": "^2.0.0", "webpack-cli": "^5.1.4", "winston": "^3.10.0", + "express-winston": "^4.2.0", "winston-daily-rotate-file": "^4.7.1", "ws": "^8.13.0", "yargs": "^17.7.2" diff --git a/packages/controller/src/Controller.ts b/packages/controller/src/Controller.ts index 89214e0f..2b5b67f2 100644 --- a/packages/controller/src/Controller.ts +++ b/packages/controller/src/Controller.ts @@ -3,6 +3,7 @@ import { BlockList, type AddressInfo, isIPv4, isIPv6 } from "net"; import type { ControllerArgs } from "../controller"; import express, { type Request, type Response, type NextFunction, type Application } from "express"; import type { Static } from "@sinclair/typebox"; +import * as expressWinston from "express-winston"; import compression from "compression"; import events, { EventEmitter } from "events"; @@ -164,6 +165,10 @@ export default class Controller { this.app = express(); this.app.locals.controller = this; this.app.locals.streams = new Map(); + this.app.use(expressWinston.logger({ + winstonInstance: this.clusterLogger, + level: "http", + })); this.trustedProxies = this.parseTrustedProxies(); this.wsServer = new WsServer(this); @@ -283,6 +288,9 @@ export default class Controller { // Load plugins await this.loadPlugins(); + this.app.use(expressWinston.errorLogger({ + winstonInstance: this.clusterLogger, + })); this.wsServer = new WsServer(this); diff --git a/packages/lib/src/logging.ts b/packages/lib/src/logging.ts index c673f98e..d8502c2d 100644 --- a/packages/lib/src/logging.ts +++ b/packages/lib/src/logging.ts @@ -9,7 +9,8 @@ export const levels = Object.freeze({ audit: 3, info: 4, server: 5, - verbose: 6, + http: 6, + verbose: 7, }); export const colors = { @@ -19,6 +20,7 @@ export const colors = { audit: "bold brightGreen", info: "bold brightBlue", server: "bold", + http: "bold grey", verbose: "bold grey", } as const; winston.addColors(colors); @@ -163,7 +165,7 @@ export const logger = winston.createLogger({ // Who in their right mind thought that log levels should be hard coded // into the type when you can define custom levels you want to support? export type Logger = Omit & { @@ -173,6 +175,7 @@ export type Logger = Omit