mirror of
https://github.com/detleph/server.git
synced 2026-09-07 07:56:18 +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 { PrismaClientUnknownRequestError } from "@prisma/client/runtime";
|
||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import ForwardableError from "./ForwardableError";
|
import ForwardableError from "./ForwardableError";
|
||||||
|
import logger from "./logger";
|
||||||
|
|
||||||
const env = process.env.NODE_ENV || "production";
|
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) {
|
if (err instanceof PrismaClientUnknownRequestError) {
|
||||||
|
logger.warning(err);
|
||||||
|
|
||||||
return res.status(404).json({
|
return res.status(404).json({
|
||||||
type: "error",
|
type: "error",
|
||||||
payload: {
|
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