Simple logging library for Node.js intended to be used internally at Miroculus.
npm i @miroculus/log
By default, the library will log everything to the console, including the log level:
const log = require('@miroculus/log')
log.info('some message')
// [INFO] some message
The library includes the following logging levels:
critical
error
warn
info
debug
And you can enable them using the function setLevel
, that receives the logging
level you which to enable, and will disable all the levels it has underneath.
e.g.:
// This will disable the `info` and `debug` logging levels.
log.setLevel('warn')
You can create an scoped logger, which will include the scope when logging it to the console. e.g.:
const { createLog } = require('@miroculus/log')
const log = createLog('my-library')
log.info('another message')
// [INFO][my-library] another message
Multiple scopes can also be used:
const { createLog } = require('@miroculus/log')
const log = createLog('my-library', 'sub-module')
log.info('another message')
// [INFO][my-library][sub-module] another message
If you want to execute some callback everytime a log is emitted, you can listen
to the event log
, e.g:
const log = require('@miroculus/log')
log.on('log', ({ level, scopes, args, time }) => {
// level === 'error'
// scopes === []
// time === Date.now()
const [err] = args
// do wathever you like with the logged err object
})
log.error(new Error('some error'))
A more complex example can be found at
examples/sentry.js
which shows how to do a very simple implementation with Sentry.
By default, the logger will log everything to the console, but this functionality can be disabled by running the following on the base logger:
const log = require('@miroculus/log')
log.disableDefaultConsoleLogger()
// To re-enable the default listener:
log.enableDefaultConsoleLogger()
This is useful to be able to define a custom console logger using the Logging Triggers, or disable the console logger altogether.