Delete storage objects for each attachment when an issue is removed. Hide responseTime from pino-pretty console output to reduce noise. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
1,018 B
TypeScript
41 lines
1,018 B
TypeScript
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}`;
|
|
},
|
|
});
|