@clipwhisperer/common
Version:
ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices
52 lines (45 loc) • 994 B
text/typescript
/* eslint-disable consistent-return */
import { NextFunction, Request, Response } from "express";
import pino from "pino";
import * as pretty from "pino-pretty";
const levels = {
http: 10,
debug: 20,
info: 30,
warn: 40,
error: 50,
fatal: 60,
};
const stream = pretty.default({
colorize: true,
translateTime: "SYS:yyyy-mm-dd HH:MM:ss.l",
levelFirst: true,
});
export const logger = pino(
{
customLevels: levels,
useOnlyCustomLevels: true,
level: "http",
},
stream
);
export const loggerMiddleware = (
req: Request,
res: Response,
next: NextFunction
): void => {
const msg = {
url: req.url,
method: req.method,
body: req.body as unknown,
params: req.params,
query: req.query,
};
const IS_PROD_MODE = process.env.NODE_ENV === "production";
if (!IS_PROD_MODE) {
logger.info(JSON.stringify(msg));
} else {
logger.info(msg, "request completed");
}
next();
};