A file based logger for precis, really a building block for the other loggers.
If your looking for an advanced logger, look to Bunyan, otherwise this gives you a basic file logger.
Not enabled by default, can be enabled by either adding to Logger.adapters or to each logger instance using:
var Logger = require('precis-file-logger').Logger;
var FileAdapter = require('precis-file-logger').FileAdapter;
var ConsoleAdapter = require('precis-file-logger').ConsoleAdapter;
var logger = new Logger({
adapters: [FileAdapter, ConsoleAdapter]
});
Takes options from the options.console object passed to the Logger instance.
The options are passed directly to util.inspect.
Default options:
{
color: true,
showHidden: true,
dept: null
}
Logs messages to a file when the arrive, provides mechanics for compressing log files when the day is complete and provides a way to delete (trim) old log files and archives when they are no longer necessary.
var Logger = require('precis-file-logger').Logger;
var FileAdapter = require('precis-file-logger').FileAdapter;
var ConsoleAdapter = require('precis-file-logger').ConsoleAdapter;
var fs = require('fs');
var fileDate = new Date(Date.parse('2015/01/01'));
var async = require('async');
var logger = new Logger({
adapters: [FileAdapter, ConsoleAdapter]
});
var testArray = [];
for(var i = 0; i<10; i++){
testArray.push(i);
}
for(var i = 0; i<10; i++){
logger.info({
index: i,
message: 'Test '+i,
time: fileDate
});
}
async.each(testArray, function(n, next){
console.log('Info on ', n);
logger.info({
index: n,
message: 'Async Test '+n,
time: fileDate
}, function(){
console.log('next', n);
next();
});
}, function(){
console.log('Dumping plain text and an Array for a try');
async.each(testArray, function(n, next){
logger.info('Test', n, !!n, [n], {time: fileDate}, function(){
next();
});
}, function(){
console.log('Error test');
async.each(testArray, function(n, next){
logger.error(new Error('Test error '+n), {time: fileDate}, function(){
next();
});
}, function(){
console.log('Circular test');
var o = {root: 'obj true'};
o.o = o;
logger.info('Circular: ', o, {time: fileDate}, function(){
console.log(fs.readFileSync(__dirname+'/logs/2015-01-01.log').toString());
console.log('Cleaning up test log file.');
fs.unlink(__dirname+'/logs/2015-01-01.log', function(){
console.log('All done');
});
});
});
});
});