Skip to content
Snippets Groups Projects
logger.ts 925 B
Newer Older
import pino from 'pino'

const GCloudLogLevelMapping= {
  trace: 'DEBUG',
  debug: 'DEBUG',
  info: 'INFO',
  warn: 'WARNING',
  error: 'ERROR',
  fatal: 'CRITICAL',
}

const mapToGCloudSeverity= (level: string) => {
  return level in GCloudLogLevelMapping ? GCloudLogLevelMapping[level as keyof typeof GCloudLogLevelMapping] : GCloudLogLevelMapping.info
}

const logger = pino({
  formatters: {
    level(level, number) {
      return {
        severity: mapToGCloudSeverity(level),
        level: number,
      }
    },
    log(entry) {
      const error = entry.err
      return { ...entry, ...(error instanceof Error && { stack_trace: error.stack }) }
    },
  },
  mixin() {
    return {
      'logging.googleapis.com/labels': {
        environment: process.env.ENVIRONMENT_ID || 'development',
        service: 'holi-unified-api',
      },
    }
  },
  messageKey: 'message',
  level: 'info',
})

export default logger