'use strict'; /** * Logger. */ const pino = require('pino'); const _ = require('lodash'); const logLevels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace']; function getLogLevel() { if ( _.isString(process.env.STRAPI_LOG_LEVEL) && _.includes(logLevels, process.env.STRAPI_LOG_LEVEL.toLowerCase()) ) { return process.env.STRAPI_LOG_LEVEL; } return 'debug'; } function getBool(envVar, defaultValue) { if (_.isBoolean(envVar)) return envVar; if (_.isString(envVar)) { if (envVar === 'true') return true; if (envVar === 'false') return false; } return defaultValue; } const loggerConfig = { level: getLogLevel(), timestamp: getBool(process.env.STRAPI_LOG_TIMESTAMP, false), // prettyPrint: getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true), forceColor: getBool(process.env.STRAPI_LOG_FORCE_COLOR, true), }; const pretty = pino.pretty({ formatter: (logs, options) => { return `${options.asColoredText( { level: 10 }, `[${new Date().toISOString()}]` )} ${options.prefix.toLowerCase()} ${logs.stack ? logs.stack : logs.msg}`; }, }); pretty.pipe(process.stdout); const logger = getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true) ? pino(loggerConfig, pretty) : pino(loggerConfig); module.exports = logger;