javascript - 如何有条件地抑制 Express(或 Connect)中的日志记录?

标签 javascript node.js express

当使用作为 Connect(以及 Express)一部分的记录器中间件时,我希望能够禁用某些请求的日志记录,例如通过在响应上设置标志或其他内容。

我设法做到了:

res.doNotLog = true;

然后,在 logger.js(Connect 模块的一部分)深处,我放入

if(res.doNotLog) return;

在正确的地方。但我当然不想修改模块本身的代码。有什么方法可以让我在不破解模块的情况下发生同样的情况吗?

编辑:

这有效:

var app = _express.createServer();

// set 'hello' routing...note that this is before middleware 
// so it won't be logged
app.get('/sayhello', function(req, res) {res.send("hey");});

// configure middleware: logging, static file serving
app.configure(function() {
    app.use(_express.logger());
    app.use(_express.static(__dirname + '/www'));
  });

// set 'goodbye' routing...note that this is after middleware 
// so it will be logged
app.get('/saygoodbye', function(req, res) {res.send("later...");});

最佳答案

最明显的事情是将这些请求的处理程序放在记录器之前。这在纯 Connect 中很容易,但不知道如何在 Express 中做到这一点,因为许多路由器代码在路由之间共享。如果只有几个这样的请求,您可以在堆栈中比 app.router 更早地以 Connect 方式处理它们。

关于javascript - 如何有条件地抑制 Express(或 Connect)中的日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10925210/

相关文章:

javascript - 如何在html5中实现打印功能

javascript - knockout : Handle events on foreach elements

javascript - eric hynds 多选过滤器在销毁和重新绑定(bind)后不显示

javascript - 如何在线发布 Node.js 服务器,以便外部应用程序始终可以访问它

node.js - 使用 SequelizeJS 查找或创建

javascript - 将字符串转换为键值对数组

javascript - NodeJs正确地从数组中拼接对象,但没有删除数据库中正确的对象

javascript - Sails.js 使用回调中的值设置模型值

node.js - 无法处理使用 Express 的路线

json - 如何通过JSON输出Jade内容? ( Node .js)