54 lines
1.3 KiB
JavaScript
Raw Normal View History

'use strict';
/**
* Logger.
*/
const pino = require('pino');
const _ = require('lodash');
const logLevels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace'];
function getLogLevel() {
2019-04-05 16:11:09 +02:00
if (
_.isString(process.env.STRAPI_LOG_LEVEL) &&
_.includes(logLevels, process.env.STRAPI_LOG_LEVEL.toLowerCase())
) {
return process.env.STRAPI_LOG_LEVEL;
}
2018-03-01 13:36:54 +01:00
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),
2018-03-06 16:51:00 +01:00
// prettyPrint: getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true),
2019-04-05 16:11:09 +02:00
forceColor: getBool(process.env.STRAPI_LOG_FORCE_COLOR, true),
};
2018-03-06 16:51:00 +01:00
const pretty = pino.pretty({
formatter: (logs, options) => {
2019-04-05 16:11:09 +02:00
return `${options.asColoredText(
{ level: 10 },
`[${new Date().toISOString()}]`
)} ${options.prefix.toLowerCase()} ${logs.stack ? logs.stack : logs.msg}`;
},
2018-03-06 16:51:00 +01:00
});
pretty.pipe(process.stdout);
2019-04-05 16:11:09 +02:00
const logger = getBool(process.env.STRAPI_LOG_PRETTY_PRINT, true)
? pino(loggerConfig, pretty)
: pino(loggerConfig);
2018-03-06 16:51:00 +01:00
module.exports = logger;