node package manager

femto-logger

femto-logger

A small, flexible logger for Node.js

Desired Features

  • Small and easy to use. Configure (or don't) and forget it.
  • Different levels of reporting (DEBUG, INFO, WARNING, ERROR, FATAL)
  • Level-based ANSI coloring
  • UTC-based Timestamping
  • printf-style formatting of messages

Usage

Usage is pretty basic:

var logging = require('femto-logging');
logging.info('Something happened.');

which will yield something like:

2014-02-18T23:34:12+00:00 [INFO] Something happened.

Coloring

Femto-logger uses ANSI coloring to color the log line according to the level.

The colors can be altered to your liking as such:

logging.config.colors.debug = logging.BRIGHT_CYAN;

The defaults are as follows:

  • DEBUG: DARK_WHITE
  • INFO: BRIGHT_WHITE
  • WARNING: BRIGHT_YELLOW
  • ERROR: BRIGHT_RED
  • FATAL: BRIGHT_MAGENTA

Possible values are: DARK_BLACK, DARK_RED, DARK_GREEN, DARK_YELLOW, DARK_BLUE, DARK_MAGENTA, DARK_CYAN, DARK_WHITE, BRIGHT_BLACK, BRIGHT_RED, BRIGHT_GREEN, BRIGHT_YELLOW, BRIGHT_BLUE, BRIGHT_MAGENTA, BRIGHT_CYAN, BRIGHT_WHITE, and NONE

It can also be disabled, which is equivalent to setting all colors to NONE:

logging.config.coloring = false;

Timestamping

Timestaamps default to UTC (GMT) for consistency, though the exact time is still based on the system clock and not an external time source. The default format is ISO 8601.

The format can be changed as such:

logging.config.date.format = 'YYYY-MM-DDTHH:mm:ssZ';

There is currently a single constant ISO8601 that can be used to reset the value.

The format of the date string is determined by the underlying moment instance.

Labels

Level labels can also be altered as such:

logging.config.labels.debug = 'DEBUG';

Message Formatting

Messages can be formatted using printf-style placeholders:

logging.debug('These are placeholders: %s, %d', 'abc', 789);

More information on usage of placeholders is available at the node-printf project website.

Return Values

In addition to messages being logged to the console, they are also returned from the logging function:

var message = logging.debug('Now the message variable has this content as well.');

Messages are logged to the console by default, but can be turned off easily:

logging.config.console.suppress = true;