morgan(
":remote-addr :method :url :status :res[content-length] :response-time ms"
);
For example, if :res[content-length] is not available, then it will print a "-" in its place. How do I change this dash to something else?
CodePudding user response:
The "-" is hardcoded in the compile function here which runs when the value behind the token is undefined.
The tokens method can be used to provide a custom string when the value behind the token is missing, i.e. undefined. You can use it to overwrite predefined tokens used in your format string passed to morgan. Here is an example overwriting the predefined :res token and replacing the - with <!> if the token value is undefined.
const express = require('express')
const morgan = require('morgan')
const app = express()
const origRes = morgan.res
morgan.token('res', function customGetResponseHeader(req, res, field) {
const resp = origRes(req, res, field)
if (resp === undefined) {
// Custom string here
return '<!>'
}
})
app.use(morgan(":remote-addr :method :url :status :res[content-length] :response-time ms"))
app.get('/', function (req, res) {
res.send('hello, world!')
})
app.listen(3000, 'localhost', () => {
console.log('listening')
})
