jiv_e 6fb0a63751
Refactor log level configuration (#7695)
* Refactor log level configuration

- Remove STRAPI_LOG_LEVEL environment variable related redundant code.
- Add helpful error message to the current log level configuration
  system.

Signed-off-by: Juho Viitasalo <juho.viitasalo@lildrop.com>

* Fix error message

Signed-off-by: Juho Viitasalo <juho.viitasalo@lildrop.com>

* Fix log level base value

* Fix breaking change

* Add debug message

* Change logger code to use Pino's log level values directly

* Update index.js

Co-authored-by: Alexandre BODIN <alexandrebodin@users.noreply.github.com>
2020-10-08 18:58:59 +02:00

63 lines
1.4 KiB
JavaScript

'use strict';
/**
* Logger.
*/
const pino = require('pino');
const _ = require('lodash');
const logLevels = Object.keys(pino.levels.values);
function getLogLevel() {
if (!_.isString(process.env.STRAPI_LOG_LEVEL)) {
// Default value.
return 'debug';
}
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;
}
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;