import { pino, type Logger } from 'pino'

const REDACT_PATHS = [
  'req.headers.authorization',
  'headers.authorization',
  '*.token',
  '*.accessToken',
  '*.access_token',
  '*.password',
  '*.secret',
]

export function createLogger(name: string, level = process.env.LOG_LEVEL ?? 'info'): Logger {
  const pretty = process.env.NODE_ENV !== 'production' && process.stdout.isTTY
  return pino({
    name,
    level,
    redact: { paths: REDACT_PATHS, censor: '[redacted]' },
    ...(pretty ? { transport: { target: 'pino-pretty', options: { colorize: true, translateTime: 'SYS:HH:MM:ss' } } } : {}),
  })
}

export type { Logger }
