mirror of
https://codeberg.org/SafeTwitch/safetwitch.git
synced 2025-02-02 01:28:46 -05:00
47 lines
No EOL
1.1 KiB
TypeScript
47 lines
No EOL
1.1 KiB
TypeScript
import { randomUUID } from 'crypto'
|
|
import { createLogger, format, transports } from 'winston'
|
|
import { NextFunction, Request, Response } from 'express'
|
|
import util from 'util'
|
|
|
|
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()
|
|
} |