mirror of
https://github.com/detleph/server.git
synced 2026-09-04 16:46:04 +02:00
Add logger using winston
+ Add formats + Add debug and error log files
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -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
|
||||
}),
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user