import { LogLevel, StageId } from '@core/types'
import { Options } from 'pino-http'
import { consoleLikeLogHook } from './console-like'

const usePinoPretty = process.env['APP_MODE'] === StageId.LOCAL

export const pinoLoggerConfig: Options = {
	...(usePinoPretty && {
		transport: {
			target: 'pino-pretty',
			options: {
				colorize: true,
				ignore: 'pid,hostname,req.headers,res.headers',
			},
		},
	}),
	level: process.env['LOG_LEVEL'] || LogLevel.INFO,
	messageKey: 'message',
	redact: ['req.headers.authorization'],
	formatters: {
		level: (label: string) => ({ level: label }),
	},
	hooks: {
		logMethod(args, method) {
			return consoleLikeLogHook(this, args, method)
		},
	},
	autoLogging: false,
}
