import path from "node:path"; import fs from "node:fs"; import pino from "pino"; import { pinoHttp } from "pino-http"; const logDir = path.resolve(process.cwd(), ".paperclip", "logs"); fs.mkdirSync(logDir, { recursive: true }); const logFile = path.join(logDir, "server.log"); const sharedOpts = { translateTime: "HH:MM:ss", ignore: "pid,hostname", }; export const logger = pino({ level: "debug", }, pino.transport({ targets: [ { target: "pino-pretty", options: { ...sharedOpts, ignore: "pid,hostname,req,res,responseTime", colorize: true, destination: 1 }, level: "info", }, { target: "pino-pretty", options: { ...sharedOpts, colorize: false, destination: logFile, mkdir: true }, level: "debug", }, ], })); export const httpLogger = pinoHttp({ logger, customSuccessMessage(req, res) { return `${req.method} ${req.url} ${res.statusCode}`; }, customErrorMessage(req, res) { return `${req.method} ${req.url} ${res.statusCode}`; }, });