Add logger using winston

+ Add formats
+ Add debug and error log files
This commit is contained in:
Stephan
2022-04-28 14:39:16 +02:00
parent 382a42d439
commit 9516b60d93
2 changed files with 42 additions and 0 deletions
+3
View File
@@ -1,6 +1,7 @@
import { PrismaClientUnknownRequestError } from "@prisma/client/runtime";
import { NextFunction, Request, Response } from "express";
import ForwardableError from "./ForwardableError";
import logger from "./logger";
const env = process.env.NODE_ENV || "production";
@@ -20,6 +21,8 @@ export default function defaultErrorHandler(err: any, req: Request, res: Respons
}
if (err instanceof PrismaClientUnknownRequestError) {
logger.warning(err);
return res.status(404).json({
type: "error",
payload: {
+39
View File
@@ -0,0 +1,39 @@
import winston, { createLogger } from "winston";
const {
format: { printf, colorize, combine, timestamp, json, errors, prettyPrint },
} = winston;
const defaultJsonFormat = combine(errors({ stack: true }), timestamp(), json({ space: 2 }));
const customCLIFormat = printf(({ level, message, label, timestamp, stack }) => {
let output = `${level}${stack ? `(1/2:message)` : ""} at ${timestamp}${label ? ` (#${label})` : ""}: ${message}\n`;
if (stack) {
output += `\n${level}(2/2:stack)${label ? ` (#${label})` : ""}: ${stack}\n\n`;
}
return output;
});
export default createLogger({
levels: winston.config.syslog.levels,
format: combine(errors({ stack: true }), timestamp()),
transports: [
new winston.transports.Console({
level: "debug",
format: combine(timestamp(), colorize(), customCLIFormat),
}),
new winston.transports.File({
filename: "/app/error.log",
level: "error",
format: defaultJsonFormat,
}),
new winston.transports.File({
level: "debug",
filename: "/app/debug.log",
format: defaultJsonFormat,
silent: !(process.env.NODE_ENV === "development"), // Silent when not in development
}),
],
});