diff --git a/lib/index.js b/lib/index.js index 9354d50..fb061be 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,6 @@ 'use strict'; +var Writable = require('stream').Writable; var bodyParser = require('body-parser'); var BaseService = require('./service'); var inherits = require('util').inherits; @@ -10,6 +11,7 @@ var StatusController = require('./status'); var MessagesController = require('./messages'); var UtilsController = require('./utils'); var CurrencyController = require('./currency'); +var morgan = require('morgan'); var bitcore = require('bitcore-lib'); var _ = bitcore.deps._; var $ = bitcore.util.preconditions; @@ -85,8 +87,30 @@ InsightAPI.prototype.start = function(callback) { setImmediate(callback); }; +InsightAPI.prototype.createLogInfoStream = function() { + var self = this; + + function Log(options) { + Writable.call(this, options); + } + inherits(Log, Writable); + + Log.prototype._write = function (chunk, enc, callback) { + self.node.log.info(chunk.slice(0, chunk.length - 1)); // remove new line and pass to logger + callback(); + }; + var stream = new Log(); + + return stream; +}; + InsightAPI.prototype.setupRoutes = function(app) { + //Setup logging + var logFormat = ':remote-addr ":method :url" :status :res[content-length] :response-time ":user-agent" '; + var logStream = this.createLogInfoStream(); + app.use(morgan(logFormat, {stream: logStream})); + app.use(bodyParser.urlencoded({extended: true})); //Enable CORS diff --git a/package.json b/package.json index 8eb0f77..30ae085 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "body-parser": "^1.13.3", "lodash": "^2.4.1", "lru-cache": "^4.0.1", + "morgan": "^1.7.0", "request": "^2.64.0" }, "devDependencies": {