I am using winston for logging in express project, with the following script:
At logger.js
:
const {
createLogger,
transports,
format
} = require('winston')
const logger = createLogger({
transports: [
new transports.File({
filename: 'app.log',
level: 'info',
format: format.combine(format.colorize(),
format.align(),
format.timestamp(),
format.json(),
)
})
]
});
And inside app.js
:
const logger = require('~logger')
app.use((req, res, next) => {
// const reqMsg = {
// 'Request IP': req.ip,
// 'Method': req.method,
// 'URL': req.originalUrl,
// 'statusCode': res.statusCode,
// 'headers': req.headers,
// 'Time': new Date(),
// 'Response': JSON.stringify(res.send)
// };
logger.logger.info((req.body))
next();
})
What I want to log is each API request data, and it's related response (colorized with timestamp).
The output is as following:
{"message":"\tundefined","level":"\u001b[32minfo\u001b[39m","timestamp":"2020-07-24T15:44:24.728Z"}
Or:
{"message":"[Object Object]","level":"\u001b[32minfo\u001b[39m","timestamp":"2020-07-24T15:44:24.728Z"}
I cannot see details of the request/response, and the output is not colorized as expected.