garnish
Prettifies ndjson or bole logs from budo, wzrd and other tools.
Example with budo, which uses this under the hood.
Install
npm install garnish [-g|--save-dev]
Usage
CLI
Pipe a ndjson emitter into garnish
like so:
node app.js | garnish [opts]
Options:
--level, -l the minimum debug level, default 'debug'
--name, -n the default app name
Where level
can be debug
, info
, warn
, error
.
API
garnish([opt])
Returns a duplexer that parses input as ndjson, and writes a pretty-printed result. Options:
level
(String)
- the minimum log level to print (default
'debug'
) - the order is as follows:
debug
, info
, warn
, error
name
(String)
- the default name for your logger; a message's
name
field will not be printed when it matches this default name, to reduce redundant/obvious information in the logs.
format
Typically, you would use bole or ndjson to write the content to garnish. You can also write ndjson to stdout
like so:
console.log({
name: 'myApp',
level: 'warn',
message: 'not found'
})
console.log({
name: 'myApp',
type: 'generated',
level: 'info',
url: '/foo.png',
statusCode: 200,
contentLength: 12800,
elapsed: 120
})
Currently garnish styles the following:
level
- the log level e.g.
debug
, info
, warn
, error
(default debug
) - only shown if message
is present
name
- an optional event or application name. It's recommended to always have a name.
message
url
- a url (stripped to pathname), useful for router logging.
statusCode
- an HTTP statusCode. Codes
>=400
are displayed in red.
contentLength
- the response size; if a
number
, bytes are assumed
elapsed
- time elapsed since the previous related event; if a
number
, milliseconds are assumed
type
colors
- an optional color mapping for custom styles
You can use the colors
field to override any of the default colors with a new ANSI style.
For example, the following will print elapsed
in yellow if it passes our threshold:
function logTime (msg) {
var now = Date.now()
var time = now - lastTime
lastTime = now
console.log({
name: 'app',
message: msg,
elapsed: time + ' ms',
colors: {
elapsed: time > 1000 ? 'yellow' : 'green'
}
})
}
See Also
License
MIT, see LICENSE.md for details.