在原有格式’dev’的基础上加上日期,方便查看请求状态
var morgan = require('morgan');
var _ = require('lodash');
morgan.token('date_now', function getDateToken(req, res) {
var date = new Date();
return "" + date.getFullYear() +
_.padStart(date.getMonth()+1,2,'0') +
_.padStart(date.getDate(),2,'0') + '/' +
_.padStart(date.getHours(),2,'0') + ':' +
_.padStart(date.getMinutes(),2,'0') + ':' +
_.padStart(date.getSeconds(),2,'0');
});
morgan.format('dev2', function developmentFormatLine(tokens, req, res) {
// get the status code if response written
var status = res._header
? res.statusCode
: undefined
// get status color
var color = status >= 500 ? 31 // red
: status >= 400 ? 33 // yellow
: status >= 300 ? 36 // cyan
: status >= 200 ? 32 // green
: 0 // no color
// get colored function
var fn = developmentFormatLine[color]
if (!fn) {
// compile
fn = developmentFormatLine[color] = morgan.compile('\x1b[34m:date_now \x1b[0m:method :url \x1b[' + color + 'm:status \x1b[0m:response-time ms - :res[content-length]\x1b[0m')
}
return fn(tokens, req, res)
});
module.exports = morgan;
输出颜色控制:
echo -e "\033[34m hahaha"
echo -e "\x1b[34m hahaha"
\033或\x1b为标记
[34m设定颜色
具体请参考:ANSI的Escape序列屏幕控制码