import build from "pino-abstract-transport"; import { db } from "../db/db.controller.js"; import { logs } from "../db/schema/logs.schema.js"; import { tryCatch } from "../utils/trycatch.utils.js"; const pinoLogLevels: Record = { 10: "trace", 20: "debug", 30: "info", 40: "warn", 50: "error", 60: "fatal", }; // Create a custom transport function export default async function () { //const {username, service, level, msg, ...extra} = log; try { return build(async (source) => { for await (const obj of source) { // convert to the name to make it more easy to find later :P const levelName = pinoLogLevels[obj.level] || "unknown"; const res = await tryCatch( db.insert(logs).values({ level: levelName, module: obj?.module?.toLowerCase(), subModule: obj?.subModule?.toLowerCase(), hostname: obj?.hostname?.toLowerCase(), message: obj.msg, stack: obj?.stack, }), ); if (res.error) { console.error(res.error); } } }); } catch (err) { console.error("Error inserting log into database:", err); } } // export const dbStream = { // write: async (logString: string) => { // try { // const obj = JSON.parse(logString); // const levelName = pinoLogLevels[obj.level] || "unknown"; // const res = await tryCatch( // db.insert(logs).values({ // level: levelName, // module: obj?.module?.toLowerCase(), // subModule: obj?.subModule?.toLowerCase(), // hostname: obj?.hostname?.toLowerCase(), // message: obj.msg, // stack: obj?.stack, // }), // ); // if (res.error) { // console.error("DB log error:", res.error); // } // } catch (err) { // console.error("Error parsing/inserting log:", err); // } // }, // };