Skip to content

Instantly share code, notes, and snippets.

@danielb2
Created March 5, 2015 03:24
Show Gist options
  • Save danielb2/18f90f017b16e78d264f to your computer and use it in GitHub Desktop.
Save danielb2/18f90f017b16e78d264f to your computer and use it in GitHub Desktop.
logger incarnation 2770231B
// Load modules
var EventEmitter = require('events').EventEmitter;
var FS = require('fs');
var Stream = require('stream');
var SafeStringify = require('json-stringify-safe');
var Util = require('util');
// Declare internals
var internals = {
internals: false,
emitter: new EventEmitter()
};
internals.logger = function () {
internals.emitter.on('write', function (data) {
if (process.env.WRECK_DEBUG_FILE) {
internals.stream = internals.stream ? internals.stream : FS.createWriteStream(process.env.WRECK_DEBUG_FILE, { flags: 'a' });
internals.stream.write(data);
internals.stream.end();
}
});
if (process.env.WRECK_DEBUG_CONSOLE) {
internals.active = true;
internals.emitter.on('write', function (data) {
console.log(data);
});
}
}
internals.logger();
module.exports.log = function (logData, read) {
// if (!internals.active) {
// return;
// }
if (logData.err) {
internals.log(logData);
}
else {
read(logData.req.res, null, function (err, payload) {
logData.payload = payload;
internals.log(logData);
});
}
}
internals.log = function (logData) {
var data = {
method: logData.req.method,
url: logData.url,
options: logData.options,
response: {
payload: logData.payload ? logData.payload.toString() : undefined,
headers: logData.req.res ? logData.req.res.headers : undefined,
statusCode: logData.req.res ? logData.req.res.statusCode : undefined,
statusMessage: logData.req.res ? logData.req.res.statusMessage : undefined
},
beginTime: new Date(logData.beginTime),
endTime: new Date(),
responseTime: new Date().getTime() - logData.beginTime,
error: logData.err,
};
var out = SafeStringify(data, null, 4);
internals.emitter.emit('write', out);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment