| | const logger = require('./logger'); |
| |
|
| | |
| | const redactPatterns = [ |
| | |
| | /api[-_]?key/i, |
| | /password/i, |
| | /token/i, |
| | /secret/i, |
| | /key/i, |
| | /certificate/i, |
| | /client[-_]?id/i, |
| | /authorization[-_]?code/i, |
| | /authorization[-_]?login[-_]?hint/i, |
| | /authorization[-_]?acr[-_]?values/i, |
| | /authorization[-_]?response[-_]?mode/i, |
| | /authorization[-_]?nonce/i, |
| | ]; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | const levels = { |
| | TRACE: 10, |
| | DEBUG: 20, |
| | INFO: 30, |
| | WARN: 40, |
| | ERROR: 50, |
| | FATAL: 60, |
| | }; |
| |
|
| | let level = levels.INFO; |
| |
|
| | module.exports = { |
| | levels, |
| | setLevel: (l) => (level = l), |
| | log: { |
| | trace: (msg) => { |
| | if (level <= levels.TRACE) { |
| | return; |
| | } |
| | logger.trace(msg); |
| | }, |
| | debug: (msg) => { |
| | if (level <= levels.DEBUG) { |
| | return; |
| | } |
| | logger.debug(msg); |
| | }, |
| | info: (msg) => { |
| | if (level <= levels.INFO) { |
| | return; |
| | } |
| | logger.info(msg); |
| | }, |
| | warn: (msg) => { |
| | if (level <= levels.WARN) { |
| | return; |
| | } |
| | logger.warn(msg); |
| | }, |
| | error: (msg) => { |
| | if (level <= levels.ERROR) { |
| | return; |
| | } |
| | logger.error(msg); |
| | }, |
| | fatal: (msg) => { |
| | if (level <= levels.FATAL) { |
| | return; |
| | } |
| | logger.fatal(msg); |
| | }, |
| |
|
| | |
| | parameters: (parameters) => { |
| | if (level <= levels.TRACE) { |
| | return; |
| | } |
| | logger.debug({ parameters }, 'Function Parameters'); |
| | }, |
| | functionName: (name) => { |
| | if (level <= levels.TRACE) { |
| | return; |
| | } |
| | logger.debug(`EXECUTING: ${name}`); |
| | }, |
| | flow: (flow) => { |
| | if (level <= levels.INFO) { |
| | return; |
| | } |
| | logger.debug(`BEGIN FLOW: ${flow}`); |
| | }, |
| | variable: ({ name, value }) => { |
| | if (level <= levels.DEBUG) { |
| | return; |
| | } |
| | |
| | let sanitizedValue = value; |
| | for (const pattern of redactPatterns) { |
| | if (pattern.test(name)) { |
| | sanitizedValue = '***'; |
| | break; |
| | } |
| | } |
| | logger.debug({ variable: { name, value: sanitizedValue } }, `VARIABLE ${name}`); |
| | }, |
| | request: () => (req, res, next) => { |
| | if (level < levels.DEBUG) { |
| | return next(); |
| | } |
| | logger.debug({ query: req.query, body: req.body }, `Hit URL ${req.url} with following`); |
| | return next(); |
| | }, |
| | }, |
| | }; |
| |
|