Allows changing Pino log levels at runtime via a file monitor
npm install pino-arborsculptureLead maintainer: jsumners
pino-arborsculpture is a module that allows you to change the logging level
of a [Pino][pino] logger, or set of loggers (e.g. child loggers) while your
process is running. It accomplishes this by monitoring a specified file
for changes and acts accordingly.
[pino]: https://github.com/pinojs/pino
``js
'use strict'
const Arborsculpt = require('pino-arborsculpture')
const pino = require('pino')
const log = pino() // info level by default
const arbor = new Arborsculpt({
path: '/tmp/adjustments.json',
loggers: [log],
interval: 60_000 // the default
})
arbor.on('error', function (err) {
// there was a problem reading the file or setting the level
})
`
At some point you decide log should be set to the debug level because/tmp/adjustments.json
production is broken, and you have to figure out why without taking it offline,
so you create the file:
`json`
{
"level": "debug"
}
Within one minute of creating the file, your process will start outputting
debug level log lines.
+ path [optional]: string pointing to the file that will be monitored. Thisos.tmpdir() + 'aborsculpt.json'
file does not need to exist until such time as you are ready to change
levels in your process. Default: loggers
+ [required]: an array of Pino instances to adjust. Default: []interval
+ [optional]: the number of milliseconds between scans of the60_000
specified file. Default:
The file being monitored must be a valid JSON file. It can contain two
possible formats:
`json`
{"level": "levelName"}
or
`json``
{
"levels": [
"levelName",
"levelName"
]
}
In the first case, the single level will be applied to all loggers supplied
at construction. In the second case, each level will be applied to the
corresponding logger in the loggers array. Note: if you supplied 5 loggers
at construction, but only 3 in the file, then only the first 3 loggers will
have their levels changed. But be aware, Pino will change the level of child
loggers when the parent logger's level is changed.
All level names must be valid level names as registered with the target Pino
instances.