File size: 2,264 Bytes
4327358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { LogLevel } from '@nestjs/common';
import { ChildLoggerOptions, Level, LevelWithSilent, Logger } from 'pino';

export interface LoggerBuilder {
  child(bindings: Record<string, any>, options?: ChildLoggerOptions): Logger;
}

function getNestJSLogLevels(): LogLevel[] {
  const level = getPinoLogLevel();
  switch (level) {
    case 'trace':
      return ['error', 'warn', 'log', 'debug', 'verbose'];
    case 'debug':
      return ['error', 'warn', 'log', 'debug'];
    case 'info':
      return ['error', 'warn', 'log'];
    case 'warn':
      return ['error', 'warn'];
    case 'error':
      return ['error', 'warn'];
    default:
      return ['error', 'warn', 'log'];
  }
}

export function getPinoLogLevel(debug: boolean = false): Level {
  const enableDebug = process.env.DEBUG != undefined || debug;
  const level = getDefaultPinoLogLevel();
  if (level === 'trace') {
    return 'trace';
  }
  if (enableDebug) {
    return 'debug';
  }
  return level;
}

export function isDebugEnabled() {
  const level = getPinoLogLevel();
  return level == 'debug' || level == 'trace';
}

export function getPinoHttpUseLevel(): LevelWithSilent {
  const levels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace'];
  const level = (process.env.WAHA_HTTP_LOG_LEVEL || 'info').toLowerCase();
  if (!levels.includes(level)) {
    console.error(
      `Unknown ${process.env.WAHA_HTTP_LOG_LEVEL}' value for WAHA_HTTP_LOG_LEVEL`,
    );
    return 'info';
  }
  return level as LevelWithSilent;
}

export function getDefaultPinoLogLevel(): Level {
  const logLevel = (process.env.WAHA_LOG_LEVEL || 'info').toLowerCase();
  const levels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace'];
  if (!levels.includes(logLevel)) {
    console.error(
      `Unknown ${process.env.WAHA_LOG_LEVEL}' value for WAHA_LOG_LEVEL`,
    );
    return 'info';
  }
  return logLevel as Level;
}

export function getPinoTransport() {
  const logFormat = (process.env.WAHA_LOG_FORMAT || 'PRETTY').toUpperCase();
  if (logFormat == 'JSON') {
    return undefined;
  }
  return {
    target: 'pino-pretty',
    options: {
      singleLine: true,
      colorize: true,
      messageFormat: '{if session} session:{session} - {end}{msg}',
    },
  };
}

export { getNestJSLogLevels };