tacoss / logro

Handy logger impl.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸŽ‰ logro NPM version codecov Build status

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' β€” set error level
  • process.env.NODE_ENV === 'test' β€” set debug 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) and Logro.createLogger(name) β€” Creates a new logro instance, name can be a filepath.
  • Logro.setForbiddenFields(fromConfig) β€” List of fields to be ignored from data objects; also Logro.clean() is affected by this.
  • Logro.getExpressLogger() β€” Returns a middleware function for easy logging, it also setup req.log as helper.
  • Logro.getLogger(name) β€” Returns a bole 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 if process.env.NODE_ENV === 'test'
  • Logro.clean(data[, fields]) β€” Safely clone and remove fields from any given object, it also removes those set by setForbiddenFields() calls.

About

Handy logger impl.


Languages

Language:JavaScript 95.3%Language:Makefile 3.5%Language:Shell 1.2%