2016-07-08 7 views
0

Ich versuche automatisch zu protokollieren, wenn eine Anfrage beendet ist.Welche Ereignisse soll ich behandeln, wenn das Antwortobjekt (Stream) bearbeitet wird, wenn die Antwort beendet ist?

Ich habe so etwas wie dies:

function (req, res, next) { 
    var startTime = clock.now(); 
    res.on('end'. function() { 
     logger.trace("END ...", req.path, res.statusCode, clock.now() - startTime, ...); 
    }); 
    res.on('error'. function() { 
     logger.trace("END ...", req.path, clock.now() - startTime, ...); 
    }); 
    nest(); 
} 
  • Ist, dass alle Fälle abdecken, tun? (z.B. wenn eine Anfrage unterbrochen wird)
  • Werde ich höchstens einmal für jede Anfrage angerufen?

Wenn eine der Antworten nein ist, geben Sie bitte an, wie es geht.

Danke.

+0

Ist das Paket nicht gut genug für Ihren Anwendungsfall? https://github.com/expressjs/response-time – arjabbar

+0

Es ist nicht. Es ist nur ein Antwort-Header mit der Zeit gesetzt. Ich möchte protokollieren können, wenn eine Anfrage endet. __Das schließt ein, wenn es vom Client unterbrochen wird__. Das Modul, das Sie erwähnt haben, verwendet "on-headers", was die Funktion "res.writeHead" schmückt. Die onHeaders-Funktion sollte nicht auf unterbrochene Anforderungen aufgerufen werden. @ 1461269 @arjabbar –

Antwort

-1

Try Finish Veranstaltung Einrichtung nach den documentation:

Hier ist eine Beispielimplementierung:

app.use(function(req, res, next) { 
    res.on('finish', function() { 
     console.log('the response has been sent', res.statusCode); 
    }); 
    next(); 
}); 
Verwandte Themen