import { config } from 'dotenv-defaults'
import pino from 'pino'

config()

const logger = {
  base: undefined, // Omits pid and hostname
  redact: {
    paths: ['headers.authorization', 'headers.cookie', 'headers.host', 'key', 'password', 'salt', 'hash'],
    censor: '**REDACTED**',
    remove: true
  },
  level: process.env.LOG_LEVEL,
  timestamp: () => `,"timestamp":${Date.now()}`,
  formatters: {
    level (label, number) {
      // See: https://github.com/pinojs/pino/blob/master/docs/api.md#logger-level
      // Also: https://confluence.open-xchange.com/pages/viewpage.action?spaceKey=EN&title=Logging
      switch (number) {
        case 10: // trace
          return { level: 8 }
        case 20: // debug
          return { level: 7 }
        case 30: // info
          return { level: 6 }
        case 40: // warn
          return { level: 4 }
        case 50: // error
          return { level: 3 }
        case 60: // fatal
          return { level: 0 }
      }
    }
  }
}

export default pino(logger)