import { createLogger, format, transports } from "winston" import { config } from "./configuration" import { v4 } from "uuid" export function newRequestId() { return v4() } export const noGuildId = 'NoGuildId' const printFn = format.printf(({ guildId, level, message, errorCode, requestId, timestamp: logTimestamp }: { [k: string]: string }) => { return `[${guildId ?? ''}][${level}][${logTimestamp}][${errorCode ?? ''}][${requestId ?? ''}]:${message}` }) const logFormat = format.combine( format.timestamp(), printFn ) const consoleTransports = [ new transports.Console({ format: logFormat, silent: process.env.NODE_ENV === 'testing' }) ] export const logger = createLogger({ level: config.bot.debug ? 'debug' : 'info', format: logFormat, silent: config.bot.silent, transports: consoleTransports })