gardener
Version:
A node process manager for couchapps that depend on npm modules, or have npm modules bundled with them.
65 lines (51 loc) • 1.33 kB
JavaScript
var winston = require('winston'),
path = require('path'),
fs = require('fs'),
mkdirp = require('mkdirp'),
categories = {};
logdir = 'logs';
winston.exitOnError = false;
exports.init = function(options) {
logdir = options.get_options_value('logdir');
setupDir(logdir);
};
exports.info = function(msg, meta) {
exports.custom('gardener','info', msg, meta);
};
exports.warn = function(msg, meta) {
exports.custom('gardener','warn', msg, meta);
};
exports.error = function(msg, meta) {
exports.custom('gardener','error', msg, meta);
};
exports.custom = function(src, level, msg, meta) {
var category = getLogger(src);
category.log(
level, msg, (meta === undefined ? '' : meta)
);
};
function setupDir(dir) {
if (!fs.existsSync(dir)) {
mkdirp.sync(dir);
}
}
function getLogger(src) {
if (categories[src]) {
return winston.loggers.get(src);
}
winston.loggers.add(src, {
console: {
silent: true
},
file: {
filename: path.join(logdir, src + '.log'),
timestamp: true,
colorize: false,
json: false,
maxsize: 1000000,
maxFiles: 3
}
});
categories[src] = true;
return winston.loggers.get(src);
}