Я бы использовал для этого специальную библиотеку журналов, есть несколько хороших. Используя библиотеку winston-express , вы можете легко регистрировать запросы в различных форматах.
например.
var express = require('express');
var expressWinston = require('express-winston');
var winston = require('winston');
var app = express();
app.use(expressWinston.logger({
transports: [
new winston.transports.File({ filename: 'express.log' })
],
format: winston.format.combine(
winston.format.json()
)
}));
app.get('/test', function(req, res, next) {
res.send('All good');
});
app.listen(3000, function(){
console.log(`Express Listening on port ${this.address().port}`);
});
Пример записи в журнале будет выглядеть так:
{
"level": "info",
"message": "HTTP GET /test",
"meta": {
"res": {
"statusCode": 200
},
"req": {
"url": "/test",
"headers": {
"host": "localhost:3000",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-language": "en-GB,en;q=0.7,en-US;q=0.3",
"accept-encoding": "gzip, deflate",
"connection": "keep-alive",
"upgrade-insecure-requests": "1",
"if-none-match": "W/\"2-nOO9QiTIwXgNtWtBJezz8kv3SLc\""
},
"method": "GET",
"httpVersion": "1.1",
"originalUrl": "/test",
"query": {}
},
"responseTime": 2
}
}