(options)
| 73 | } |
| 74 | |
| 75 | function createLogger (options) { |
| 76 | if (options.logger && options.loggerInstance) { |
| 77 | throw new FST_ERR_LOG_LOGGER_AND_LOGGER_INSTANCE_PROVIDED() |
| 78 | } |
| 79 | |
| 80 | if (!options.loggerInstance && !options.logger) { |
| 81 | const nullLogger = require('abstract-logging') |
| 82 | const logger = nullLogger |
| 83 | logger.child = () => logger |
| 84 | return { logger, hasLogger: false } |
| 85 | } |
| 86 | |
| 87 | const { createPinoLogger, serializers } = require('./logger-pino.js') |
| 88 | |
| 89 | // check if the logger instance has all required properties |
| 90 | if (validateLogger(options.loggerInstance)) { |
| 91 | const logger = createPinoLogger({ |
| 92 | logger: options.loggerInstance, |
| 93 | serializers: Object.assign({}, serializers, options.loggerInstance.serializers) |
| 94 | }) |
| 95 | return { logger, hasLogger: true } |
| 96 | } |
| 97 | |
| 98 | // if a logger instance is passed to logger, throw an exception |
| 99 | if (validateLogger(options.logger)) { |
| 100 | throw FST_ERR_LOG_INVALID_LOGGER_CONFIG() |
| 101 | } |
| 102 | |
| 103 | if (options.loggerInstance) { |
| 104 | throw FST_ERR_LOG_INVALID_LOGGER_INSTANCE() |
| 105 | } |
| 106 | |
| 107 | const localLoggerOptions = {} |
| 108 | if (Object.prototype.toString.call(options.logger) === '[object Object]') { |
| 109 | Reflect.ownKeys(options.logger).forEach(prop => { |
| 110 | Object.defineProperty(localLoggerOptions, prop, { |
| 111 | value: options.logger[prop], |
| 112 | writable: true, |
| 113 | enumerable: true, |
| 114 | configurable: true |
| 115 | }) |
| 116 | }) |
| 117 | } |
| 118 | localLoggerOptions.level = localLoggerOptions.level || 'info' |
| 119 | localLoggerOptions.serializers = Object.assign({}, serializers, localLoggerOptions.serializers) |
| 120 | options.logger = localLoggerOptions |
| 121 | const logger = createPinoLogger(options.logger) |
| 122 | return { logger, hasLogger: true } |
| 123 | } |
| 124 | |
| 125 | function now () { |
| 126 | const ts = process.hrtime() |
no test coverage detected