loggert

0.2.3 • Public • Published

Loggert

npm version Build Status Coverage Status Dependency Status devDependency Status

Easy and flexible logging in Node.

Usage

Getting started

For one process, the configuration of Loggert must be set once. Here is an example using some of the built in transports and formatters:

var log = require('loggert')('my-namespace');
 
var ConsoleTransport = log.transports.Console;
var FileTransport = log.transports.File;
 
var DefaultFormatter = log.formatters.Default;
var RawFormatter = log.formatters.Raw;
 
log.setConfig({
    transports: [
        new ConsoleTransport({
            level: 'info', // Log "info" levels and above. 
            // level: ['info', 'error'], // Pass an array to only log "info" and "error" levels. 
            processId: true, // Include the processId in the logs.
            formatter: new DefaultFormatter({
                colorize: true // Tell the formatter to colorize the output.
            })
        })
     ]
});
 
 
var x = 200;
 
// The first argument is always the "message", all following arguments should containg extra info.
log.warn('This is a warning message', { someKey: 'avalue' }, x);

Custom transports and formatters

Transports and formatters are simple objects. Creating a custom transport or formatter is easy. Transports must have a write function and a level property (being one of the log levels or an array of log levels). A formatter must have a format function. Here is an example of a custom transport with a custom formatter:

 
function MyFormatter (options) {
    this.colorize = options.colorize || false;
}
 
MyFormatter.prototype.format = function (logObject) {
    var formattedLogObject = logObject.namespace + '' + logObject.message;
 
    if (this.colorize) {
        formattedLogObject = exampleColorFunction(formattedLogObject);
    }
 
    return formattedLogObject;
};
 
 
function CustomTransport (options) {
    if (!options.formatter) {
        throw new Error('CustomTransport transporter has no formatter.');
    }
    this.level = options.level || 'trace' // Default to "trace" level
    this.formatter = options.formatter;
}
 
CustomTransport.prototype.write = function (logObject) {
    // Write the logObject somewhere.    
    console.log(this.formatter.format(logObject));
}
 
// Set up loggert;
var log = require('loggert');
log.setConfig({
    transports: [
        new CustomTransport({
            formatter: new MyFormatter({
                colorize: true
            })
        })
    ]
});
 

Namespaces

Each time loggert is required, a namespace can be defined. The namespace will be added as a prefix to messages. For example:

// webservice.js
var log = require('loggert')('webservice-example');
// database.js
var log = require('loggert')('database-example');

Log levels

There are 6 log levels available. These are functions on the loggert instance. trace is the lowest level, fatal is the highest level.

  1. trace
  2. debug
  3. info
  4. warn
  5. error
  6. fatal

Package Sidebar

Install

npm i loggert

Weekly Downloads

2

Version

0.2.3

License

MIT

Last publish

Collaborators

  • arjanfrans