blob: c1df008b16458b93812f56e84ea4f0c172fef9d1 [file] [log] [blame]
// Simple event+strategy-based logging for NanoCouch
// written by: Derek Perez
var verbose = (process.env.NANO_ENV==='testing');
// snippet by Marak Squires.
// MIT Licenced, Nodejitsu
function randomString(len, charSet) {
charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var str = '';
for (var i = 0; i < len; i++) {
var randomPoz = Math.floor(Math.random() * charSet.length);
str += charSet.substring(randomPoz,randomPoz+1);
}
return str;
}
module.exports = function logging(cfg) {
var logStrategy = cfg ? cfg.log : undefined;
this.cfg = cfg;
if (typeof logStrategy !== 'function') {
if(verbose) {
logStrategy = function consoleLog(eventId, args) {
console.log(eventId, args);
};
}
else logStrategy = function noop(){};
}
return function logEvent(prefix) {
var eventId = (prefix ? prefix + '-' : '') + randomString(10);
return function log() {
logStrategy.call(this, eventId,
[].slice.call(arguments,0)); // convert arguments into array
};
};
};