mirror of
https://codeberg.org/SafeTwitch/safetwitch-backend.git
synced 2025-02-07 12:18:13 -05:00
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
|
import { randomUUID } from 'crypto'
|
||
|
import { createLogger, format, transports } from 'winston'
|
||
|
import { NextFunction, Request, Response } from 'express'
|
||
|
|
||
|
const logLevels = {
|
||
|
fatal: 0,
|
||
|
error: 1,
|
||
|
warn: 2,
|
||
|
info: 3,
|
||
|
debug: 4,
|
||
|
trace: 5,
|
||
|
};
|
||
|
|
||
|
|
||
|
export const logger = createLogger({
|
||
|
format: format.combine(format.timestamp(), format.json()),
|
||
|
transports: [
|
||
|
new transports.Console({
|
||
|
format: format.combine(
|
||
|
format.colorize(),
|
||
|
format.simple()
|
||
|
)
|
||
|
}),
|
||
|
new transports.File({ filename: './serverLog.log' })
|
||
|
],
|
||
|
levels: logLevels
|
||
|
});
|
||
|
|
||
|
export const errorHandler = (err: Error, req: Request, res: Response, next: NextFunction) => {
|
||
|
if (res.headersSent) {
|
||
|
return next(err)
|
||
|
}
|
||
|
|
||
|
res.status(500).send({ status: 'error', message: err.message, code: res.locals.uuid })
|
||
|
logger.warn({
|
||
|
message: err.message,
|
||
|
endpoint: req.originalUrl,
|
||
|
reqId: res.locals.uuid,
|
||
|
origin: req.headers.origin,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export const uuid = (req: Request, res: Response, next: NextFunction) => {
|
||
|
res.locals.uuid = randomUUID()
|
||
|
next()
|
||
|
}
|