| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| import pino from "pino"; |
| import { resolve } from "path"; |
| import { getLogConfig, initLogRotation } from "@/lib/logRotation"; |
|
|
| const isDev = process.env.NODE_ENV !== "production"; |
|
|
| const baseConfig: pino.LoggerOptions = { |
| level: process.env.LOG_LEVEL || (isDev ? "debug" : "info"), |
| base: { service: "omniroute" }, |
| timestamp: pino.stdTimeFunctions.isoTime, |
| formatters: { |
| level(label: string) { |
| return { level: label }; |
| }, |
| }, |
| }; |
|
|
| |
| |
| |
| |
| function buildLogger(): pino.Logger { |
| const logConfig = getLogConfig(); |
| const logLevel = (baseConfig.level as string) || "info"; |
|
|
| |
| if (logConfig.logToFile) { |
| try { |
| |
| initLogRotation(); |
|
|
| |
| const absLogPath = resolve(logConfig.logFilePath); |
|
|
| if (isDev) { |
| |
| return pino({ |
| ...baseConfig, |
| transport: { |
| targets: [ |
| { |
| target: "pino-pretty", |
| options: { |
| colorize: true, |
| translateTime: "HH:MM:ss.l", |
| ignore: "pid,hostname,service", |
| messageFormat: "[{module}] {msg}", |
| destination: 1, |
| }, |
| level: logLevel, |
| }, |
| { |
| target: "pino/file", |
| options: { destination: absLogPath, mkdir: true }, |
| level: logLevel, |
| }, |
| ], |
| }, |
| }); |
| } |
|
|
| |
| return pino({ |
| ...baseConfig, |
| transport: { |
| targets: [ |
| { |
| target: "pino/file", |
| options: { destination: 1 }, |
| level: logLevel, |
| }, |
| { |
| target: "pino/file", |
| options: { destination: absLogPath, mkdir: true }, |
| level: logLevel, |
| }, |
| ], |
| }, |
| }); |
| } catch { |
| |
| console.warn("[logger] Failed to set up file transport, falling back to console only"); |
| } |
| } |
|
|
| |
| if (isDev) { |
| return pino({ |
| ...baseConfig, |
| transport: { |
| target: "pino-pretty", |
| options: { |
| colorize: true, |
| translateTime: "HH:MM:ss.l", |
| ignore: "pid,hostname,service", |
| messageFormat: "[{module}] {msg}", |
| }, |
| }, |
| }); |
| } |
|
|
| return pino(baseConfig); |
| } |
|
|
| export const logger = buildLogger(); |
|
|
| |
| |
| |
| |
| |
| export function createLogger(module: string) { |
| return logger.child({ module }); |
| } |
|
|
| export default logger; |
|
|