🎉 logro
Handy logger impl.
Built on-top of bole to provide ready to use logging:
const log = require('logro').createLogger(__filename);
log.info('Just testing');
It also comes with simple formatter for the CLI:
$ echo '{"foo":"bar","time":1560577967962}' | logrof
# 12:52:47 { foo: 'bar' }
How it works?
By design, logro
messages are sent to the stderr:
$ node main.js 2>&1 | logrof
# 1:22:37 INFO main.js { hostname: 'dev.local', pid: 62525, evt: 'Just testing' }
Most methods receive a message and some data, otherwise an error with some data, etc.
Last argument is used as identity for the ongoing message, on all methods.
Quiet methods (derived from bole
):
-
info(msg[, data[, guid]])
— Just info; hidden on production -
debug(msg[, data[, guid]])
— Debug info; shown during test only -
warn(msg[, error[, guid]])
— Relax warnings; hidden from stdout -
error(msg[, error[, guid]])
— Regular/relax errors; not critical, hidden
If warn/error receives an instance of
Error
, a proper failure/exception will be raised, respectively.
Loud methods:
-
failure(err[, type[, guid]])
— Real warnings! -
exception(err[, msg[, data[, guid]]])
— Fatal errors💣
Both methods always print to the stdout during development to help, the default level is
info
.
Log levels are set as follows:
-
process.env.NODE_ENV === 'production'
— seterror
level -
process.env.NODE_ENV === 'test'
— setdebug
level -
process.env.REMOVE_LOG === 'true'
— disable all logs
Formatting
Pipe your logs to logrof
in order to give them some format, it will ignore non JSON objects from the stream.
Recognized fields are: ts
, time
, ns
, name
and level
.
Options:
-
--quiet
— Non JSON objects are not longer printed -
--no-color
— Disable colors on formatting from output
Otherwise, the default output is JSON, always.
Public API
-
new Logro(name)
andLogro.createLogger(name)
— Creates a new logro instance,name
can be a filepath. -
Logro.setForbiddenFields(fromConfig)
— List of fields to be ignored fromdata
objects; alsoLogro.clean()
is affected by this. -
Logro.getExpressLogger()
— Returns a middleware function for easy logging, it also setupreq.log
as helper. -
Logro.getLogger(name)
— Returns abole
instance. -
Logro.format(message[, data[, now]])
— Returns the message formatted for CLI usage:[timestamp] [message] (data is optional)
-
Logro.logger(message)
— Print formatted messages to the stdout. -
Logro.inspect(message)
— Print formatted messages to the stdout; ignored ifprocess.env.NODE_ENV === 'test'
-
Logro.clean(data[, fields])
— Safely clone and remove fields from any given object, it also removes those set bysetForbiddenFields()
calls.