Wpis z mikrobloga

#nodejs #javascript

Chciałem zapisać w logu połączenie ze stroną więc napisałem middleware expressa, która zostaje uruchomiona dla adresu /:
app.use('[/]', logger);

w loggerze pobieram aktualną godzinę new Date(), ale niestety jest ona stała w każdym wpisie w logu po restarcie. Takiego problemu nie mam gdy robię zapis do loga w metodzie get routera.
  • 11
new Date()+ ' ' +clientIP


@ziolo86: To teraz kwestia tego, gdzie uruchamiasz ten fragment. Jeśli wykonujesz jakąś metodę, to new Date() powinni się wykonać za każdym razem, gdy skorzystasz z metody.

Według Twojego opisu wygląda to tak jakbyś podczas ładowania modułu przygotował callback z zapisem do pliku i datą a potem Node.js #!$%@? odwołanie do modułu i zostaje ta sama data.
@obereczekpl: tak wygląda moduł logger

module.exports = function(request, response, next) {
var fs = require('fs');
var clientIP = (request.header('x-forwarded-for') || request.connection.remoteAddress).substring(7);

response.on('finish', function () {
fs.appendFile('./logs/access.log', Date.now()+ ' ' +clientIP + "\r\n", function(err) { console.log("Error zapisu");});
//console.log('adres: ' + request.url);
});

next();
};