12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict';
- 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;
|