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
})
