User-friendly logging

npm install cedar
78 downloads in the last week
263 downloads in the last month


NPM Version Build Status Code Coverage Dependencies Support

Cedar is a Node.js logging library that is designed to be fast, simple and pretty. Its console transport shows color symbols before your log messages.

Getting started

Add cedar to your dependencies.

npm install --save cedar

Create a stdout logger, and use it.

var log = require('cedar')();

log('Use a string.');

log(['Or'], ['an'], ['array']);

log({or: 'json, obviously'});

log.debug('This will be preceded by a magenta diamond thingy.');
log.trace('This will be preceded by a cyan plus.');
log.log('This will be preceded by a grey arrow, as above.');
log.info('This will be preceded by a green check mark.');
log.warn('This will be preceded by a thick yellow asterisk.');
log.error('This will be preceded by a thick red X.');

Logger customization

log.setFormat(function callback[, string type])

Customize the message format.

var log = require('cedar')();
log.setFormat(function (message, prefix, type) {
  return prefix + message + '!';

If you specify the optional type parameter, it will only change the formatter for that type.

log.setLevel(string level)

Change the level of log that is shown (default: log).

var log = require('cedar')();

Setting to a level from this list will enable logs of that level and all of the levels after it: debug, trace, log, info, warn, error. Setting the level to nothing will stop all logs.

log.setPrefixes(object prefixes)

Customize prefixes for the console log messages.


var log = require('cedar')();
  debug: 'DEBUG '.magenta,
  trace: 'TRACE '.cyan,
  log: 'LOG   '.grey,
  info: 'INFO  '.green,
  warn: 'WARN  '.yellow,
  error: 'ERROR '.red

// You can also get the prefixes:
var prefixes = log.getPrefixes();

log.setJsonSpace(string whitespace)

Customize the spacing that JSON.stringify uses.

var log = require('cedar')();
log.setJsonSpace('  ');

The default is two spaces.


Cedar currently supports "console" and "file" transports.


The console logger writes to process.stdout with pretty colors.

Console is the default transport, so the following are equivalent:

logger = require('cedar')();
logger = require('cedar')('console');


The base logger writes to a stream.

var fs = require('fs');
var ws = fs.createWriteStream('my.log');
var logger = require('cedar')('base', {stream: ws});
logger.log('Write this string to a file');


The file logger writes JSON arrays to a file. The default file path is logs/cedar.log.

var logger = require('cedar')('file', {path: 'logs/cedar.log'});
logger.log('Write this string to a file');
npm loves you