我正在尝试使用自定义函数通过 express.logger(...) 仅将某些事件记录到文件中,并且当响应和请求不符合我设置的标准时它会挂起。
var express = require('express'),
app = express.createServer(
express.logger(function(req, res) {
var status = res.statusCode,
color = 32;
if (status >= 500) color = 31;
else if (status >= 400) color = 33;
else if (status >= 300) color = 36;
if (req.method==='POST' && req.originalUrl!=='/plankton') {
return '\033[90m' + req.method
+ ' ' + req.originalUrl + ' '
+ '\033[' + color + 'm' + res.statusCode
+ ' \033[90m'
+ (new Date - req._startTime)
+ 'ms\033[0m';
}
else if (res.statusCode>=400) {
return '\033[90m' + req.method
+ ' ' + req.originalUrl + ' '
+ ' ' + req.body + ' '
+ '\033[' + color + 'm' + res.statusCode
+ ' \033[90m'
+ (new Date - req._startTime)
+ 'ms\033[0m';
} else {
// what should be inserted here?
// I only want to log the above events...
}
});
)
在 else 中返回 '' 不起作用。它挂起,我的猜测是它不允许响应完成/发送。
也许我应该使用不同的方法来记录,但我喜欢 express 中间件的简单性,因为它允许我不必在任何地方都包含日志消息 - 或者我也可以绕过它并为某些事件设置一个监听器。
关于我应该在其他方面有什么想法?或者对更好的方法的建议?