MCPcopy
hub / github.com/fastify/fastify / createLogger

Function createLogger

lib/logger-factory.js:75–123  ·  view source on GitHub ↗
(options)

Source from the content-addressed store, hash-verified

73}
74
75function 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
125function now () {
126 const ts = process.hrtime()

Callers 1

processOptionsFunction · 0.85

Calls 2

validateLoggerFunction · 0.85
createPinoLoggerFunction · 0.85

Tested by

no test coverage detected