1

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...");});
4

1 に答える 1

0

最も明白なことは、それらの要求のハンドラーをロガーの前に置くことです。これは純粋なConnectでは簡単ですが、多くのルーターコードがルート間で共有されているため、Expressでそれを行う方法がわかりません。そのようなリクエストが数個しかない場合は、スタックの早い段階でそれらをConnectスタイルで処理できますapp.router

于 2012-06-07T03:29:30.150 に答える