2017-08-05 20:25:57 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Logger.
|
|
|
|
*/
|
|
|
|
|
|
|
|
const pino = require('pino');
|
2018-02-27 09:08:31 +01:00
|
|
|
const _ = require('lodash');
|
2017-08-05 20:25:57 +02:00
|
|
|
|
2020-10-08 19:58:59 +03:00
|
|
|
const logLevels = Object.keys(pino.levels.values);
|
2018-02-27 09:08:31 +01:00
|
|
|
|
|
|
|
function getLogLevel() {
|
2020-10-08 19:58:59 +03:00
|
|
|
if (!_.isString(process.env.STRAPI_LOG_LEVEL)) {
|
|
|
|
// Default value.
|
|
|
|
return 'debug';
|
2018-02-27 09:08:31 +01:00
|
|
|
}
|
2020-10-08 19:58:59 +03:00
|
|
|
|
|
|
|
const logLevel = process.env.STRAPI_LOG_LEVEL.toLowerCase();
|
|
|
|
|
|
|
|
if (!_.includes(logLevels, logLevel)) {
|
|
|
|
throw new Error(
|
|
|
|
"Invalid log level set in STRAPI_LOG_LEVEL environment variable. Accepted values are: '" +
|
|
|
|
logLevels.join("', '") +
|
|
|
|
"'."
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return logLevel;
|
2018-02-27 09:08:31 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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-02-27 09:08:31 +01:00
|
|
|
};
|
|
|
|
|
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;
|