Logan is a mini template system for the console and colors.
It allows to cleanly separate content from style and create beautiful logging functions.
Let's say you want to write a logging function that says hello.
// Without Logan
function hello(arg) {
console.log('Hello'.bold.green + ' : ' + arg.cyan);
}
// With Logan
var hello = logan.create('Hello : %', 'bold.green . cyan')
hello('world');
var logan = require('logan');
This is the most useful method of logan. It lets you define all your templates in one place.
logan.set({
info: ['info : %', 'yellow'],
warn: ['warn : %', 'orange'],
omg : ['omg : %', 'rainbow']
});
logan.info('some info');
Notice how easy it is to see what all your logging functions will output.
Also, with set
your module users can easily theme logs:
// Overriding omg to be... more OMG!!!
logan.set({
omg: ['OMG : % !!!', 'red . . red']
});
Returns a logging function.
var info = logan.create('info : %', 'yellow');
info('some text');
Returns a function which returns a string when called.
var info = logan.compile('info : %', 'yellow');
console.log(info('some text'));
- % is used for string replacement.
- {} lets you define blocks.
- . means default style.
- styles can be chained (example: bold.underline.red).
{} usage:
// for example, instead of writing this:
var green = logan.create('some long green string', 'green green green green');
// using {} you can write
var green = logan.create('{some long green string}', 'green');
If you want to suppress all output, during tests for example, just set silent
to true
.
logan.set({'foo': ['foo', 'red']});
logan.silent = true;
logan.foo(); // No output
logan.silent = false;
logan.foo(): // will output 'foo'
Since there's a templating engine called hogan and this one is about logging, it was called logan.
If you want to see how Logan can be used in another project, you can have a look at ShoutJS.