Skip to content
Snippets Groups Projects
logger.ts 925 B
Newer Older
  • Learn to ignore specific revisions
  • 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