import pino from "pino"; import { config } from "./config.js"; const pad = (value: number) => value.toString().padStart(2, "0"); const padMilliseconds = (value: number) => value.toString().padStart(3, "0"); const formatLocalTimestamp = (date: Date) => { const year = date.getFullYear(); const month = pad(date.getMonth() + 1); const day = pad(date.getDate()); const hours = pad(date.getHours()); const minutes = pad(date.getMinutes()); const seconds = pad(date.getSeconds()); const milliseconds = padMilliseconds(date.getMilliseconds()); const offsetMinutes = -date.getTimezoneOffset(); const sign = offsetMinutes >= 0 ? "+" : "-"; const absoluteOffsetMinutes = Math.abs(offsetMinutes); const offsetHours = pad(Math.floor(absoluteOffsetMinutes / 60)); const offsetRemainderMinutes = pad(absoluteOffsetMinutes % 60); return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}${sign}${offsetHours}:${offsetRemainderMinutes}`; }; export const logger = pino({ level: config.LOG_LEVEL, formatters: { level: (label) => ({ level: label }), }, timestamp: () => `,"time":"${formatLocalTimestamp(new Date())}"`, transport: config.NODE_ENV === "development" ? { target: "pino-pretty", options: { colorize: true, translateTime: "SYS:yyyy-mm-dd HH:MM:ss.l o", }, } : undefined, });