https://github.com/Mparaiso/monolog.js
###Log everything everywhere, monolog for javascript and node
author mparaiso mparaiso@online.fr
heavily inspired by monolog PHP library
###Installation
npm install -g monolog
####Handlers
- ConsoleLogHandler : log to console
- CouchDBHandler : log to CouchDB
- MongoDBHandler : log to MongoDB
- StreamHandler : log to a stream
- TestHandler : log to an array
- NullHandler : null logging
####Processors
- ExpressProcessor : get express request data
- WebProcessor : get server data
####Formatters
- JSONFormatter : format log to JSON
- LineFormatter : format log to a string
###Usage
####Basic usage
var monolog = require('monolog')
, Logger = monolog.Logger
, StreamHandler = monolog.handler.StreamHandler;
//create a Log channel
var log = new Logger('name')
//create a Log handler
log.pushHandler(new StreamHandler('/path/to/your.log',Logger.DEBUG))
//listen to log events
log.on("log",function(error,record,handler){console.log(arguments)});
// add records to the log
log.warn('Foo')
log.err('Bar')
log.debug('Baz')
####Server request logging
var http, logger, monolog, port, server, webProcessor;
http = require('http');
monolog = require('monolog');
port = 3000;
server = http.createServer();
logger = new monolog.Logger("server logger");
logger.pushHandler(new monolog.handler.ConsoleLogHandler);
// a WebProcessor extracts data from each request and add it to the log records
logger.pushProcessor(new monolog.processor.WebProcessor(server));
server.on('request', function(req, res) {
logger.info('logging request');
return res.end('ok!');
});
server.listen(3000);
console.log("listening on port " + port);
var monolog,logger;
monolog=require('monolog');
logger = new monolog.Logger("couchdb logger");
logger.pushHandler(new monolog.handler.CouchDBHandler({
host:"localhost",
dbname:"logger"
}));
logger.on('log',function(err,res,record,handler){
console.log(arguments);
});
logger.info('Logging to couchdb');
var monolog,logger,mongodb;
monolog=require('monolog');
mongodb = require('mongodb').MongoClient.connect("localhost",function(err,db){
logger=new monolog.Logger("channel name");
logger.pushHandler(new monolog.handler.MongoDBHandler(db,"log_collection"));
logger.info("log message");
});
in a file called logger.js
"use strict";
/**
* monolog middleware for connect and express
* USAGE
* =====
* var app=express()
* app.use(logger.middleware(app,"debugging"));
*
*/
var monolog = require('monolog');
/**
* @type {monolog.Logger}
*/
var logger = new monolog.Logger("express logger");
logger.addHandler(new monolog.handler.StreamHandler(__dirname + "/../temp/log.txt"));
/**
* [middleware description]
* @param {Express} app express app
* @param {String} message log message
* @return {Function} middleware
*/
logger.middleware = function(app, message) {
message = message || "debug";
logger.addProcessor(new monolog.processor.ExpressProcessor(app));
app.set('logger', logger);
var F = function(req, res, next) {
logger.debug(message);
next();
};
F.logger = logger;
return F;
};
module.exports = logger;