|
1 | 1 | require('dotenv').config(); |
2 | 2 | const config = require('config'); |
3 | | -const Rollbar = require('rollbar'); |
| 3 | + |
4 | 4 | const LOG_LEVEL_INFO = 'info'; |
5 | 5 | const LOG_LEVEL_WARNING = 'warning'; |
6 | 6 | const LOG_LEVEL_ERROR = 'error'; |
7 | 7 | const LOG_LEVEL_DEBUG = 'debug'; |
8 | 8 | const LOG_LEVEL_CRITICAL = 'critical'; |
9 | 9 | const packageJson = require('../package.json'); |
10 | 10 | const os = require('os'); |
11 | | -const logger = new Rollbar({ |
12 | | - // enabled: false, // silence rollbar as it takes too much quota. |
13 | | - accessToken: config.get('rollbar.postToken'), |
14 | | - verbose: true, |
15 | | - handleUncaughtExceptions: true, |
16 | | - handleUnhandledRejections: true, |
17 | | - environment: process.env.ENVIRONMENT || "development", |
18 | | - reportLevel: process.env.LOG_LEVEL || LOG_LEVEL_CRITICAL, |
19 | | - payload: { |
20 | | - system: { |
21 | | - appVersion: packageJson.version, |
22 | | - hostname: os.hostname(), |
23 | | - platform: os.platform(), |
24 | | - type: os.type(), |
25 | | - }, |
26 | | - }, |
27 | | -}); |
28 | 11 |
|
29 | | -if ('development' === process.env.NODE_ENV || 'true' === process.env.PRINT_LOGS_CONSOLE) { |
30 | | - logger.configure({verbose: true}); |
31 | | -} |
| 12 | +const rollbarConfig = { |
| 13 | + // enabled: false, // silence rollbar as it takes too much quota. |
| 14 | + accessToken: config.get('rollbar.postToken'), |
| 15 | + verbose: false, |
| 16 | + handleUncaughtExceptions: false, |
| 17 | + handleUnhandledRejections: false, |
| 18 | + environment: process.env.ENVIRONMENT || "development", |
| 19 | + payload: { |
| 20 | + system: { |
| 21 | + appVersion: packageJson.version, |
| 22 | + hostname: os.hostname(), |
| 23 | + platform: os.platform(), |
| 24 | + type: os.type(), |
| 25 | + }, |
| 26 | + } |
| 27 | +}; |
| 28 | + |
| 29 | +const winston = require('winston'); |
| 30 | +const RollbarTransport = require('winston-transport-rollbar-3'); |
| 31 | +const { context, trace } = require('@opentelemetry/api'); |
| 32 | + |
| 33 | +const {combine, timestamp, prettyPrint, errors} = winston.format; |
| 34 | +const logger = winston.createLogger({ |
| 35 | + exitOnError: true, |
| 36 | + level: process.env.LOG_LEVEL || LOG_LEVEL_INFO, |
| 37 | + format: combine( |
| 38 | + timestamp(), |
| 39 | + errors({stack: true}), |
| 40 | + winston.format((info, opts) => { |
| 41 | + const span = trace.getSpan(context.active()); |
| 42 | + const traceId = span?.spanContext().traceId; |
| 43 | + if (traceId) { |
| 44 | + info.traceId = traceId; |
| 45 | + } |
| 46 | + const testId = span?.spanContext().testId; |
| 47 | + if (testId) { |
| 48 | + info.testId = testId; |
| 49 | + } |
| 50 | + return info; |
| 51 | + })(), |
| 52 | + winston.format.json(), |
| 53 | + ...(process.env.NODE_ENV !== "production" ? [prettyPrint()] : []) |
| 54 | + ), |
| 55 | + transports: [ |
| 56 | + new winston.transports.Console(), |
| 57 | + new RollbarTransport({ |
| 58 | + rollbarConfig, |
| 59 | + level: process.env.ROLLBAR_LOG_LEVEL || LOG_LEVEL_ERROR, |
| 60 | + }) |
| 61 | + ], |
| 62 | + exceptionHandlers: [ |
| 63 | + new winston.transports.Console(), |
| 64 | + new RollbarTransport({ |
| 65 | + rollbarConfig, |
| 66 | + level: process.env.ROLLBAR_LOG_LEVEL || LOG_LEVEL_ERROR, |
| 67 | + }) |
| 68 | + ], |
| 69 | + rejectionHandlers: [ |
| 70 | + new winston.transports.Console(), |
| 71 | + new RollbarTransport({ |
| 72 | + rollbarConfig, |
| 73 | + level: process.env.ROLLBAR_LOG_LEVEL || LOG_LEVEL_ERROR, |
| 74 | + }) |
| 75 | + ], |
| 76 | +}); |
32 | 77 |
|
33 | 78 | module.exports = { |
34 | | - logger: logger, |
35 | | - LOG_LEVEL_INFO: LOG_LEVEL_INFO, |
36 | | - LOG_LEVEL_WARNING: LOG_LEVEL_WARNING, |
37 | | - LOG_LEVEL_ERROR: LOG_LEVEL_ERROR, |
38 | | - LOG_LEVEL_CRITICAL: LOG_LEVEL_CRITICAL, |
39 | | - LOG_LEVEL_DEBUG: LOG_LEVEL_DEBUG |
| 79 | + logger: logger, |
| 80 | + LOG_LEVEL_INFO: LOG_LEVEL_INFO, |
| 81 | + LOG_LEVEL_WARNING: LOG_LEVEL_WARNING, |
| 82 | + LOG_LEVEL_ERROR: LOG_LEVEL_ERROR, |
| 83 | + LOG_LEVEL_CRITICAL: LOG_LEVEL_CRITICAL, |
| 84 | + LOG_LEVEL_DEBUG: LOG_LEVEL_DEBUG |
40 | 85 | }; |
0 commit comments