egg-logger
Version:
53 lines (44 loc) • 1.35 kB
JavaScript
;
const Transport = require('./transport');
const utils = require('../utils');
const levels = require('../level');
/**
* output log to console {@link Transport}。
* specifical level by EGG_LOG has the highest priority
*/
class ConsoleTransport extends Transport {
/**
* @class
* @param {Object} options
* - {Array} [stderrLevel = ERROR] - output to stderr level, must higher than options.level
*/
constructor(options) {
super(options);
this.options.stderrLevel = utils.normalizeLevel(this.options.stderrLevel);
// EGG_LOG has the highest priority
if (process.env.EGG_LOG) {
this.options.level = utils.normalizeLevel(process.env.EGG_LOG);
}
}
get defaults() {
return utils.assign(super.defaults, {
stderrLevel: 'ERROR',
});
}
/**
* output log, see {@link Transport#log}
* if stderrLevel presents, will output log to stderr
* @param {String} level - log level, in upper case
* @param {Array} args - all arguments
* @param {Object} meta - meta infomations
*/
log(level, args, meta) {
const msg = super.log(level, args, meta);
if (levels[level] >= this.options.stderrLevel && levels[level] < levels['NONE']) {
process.stderr.write(msg);
} else {
process.stdout.write(msg);
}
}
}
module.exports = ConsoleTransport;