2015-01-02 23:22:48 -05:00
|
|
|
var fs = require("graceful-fs");
|
2013-09-05 13:48:05 -05:00
|
|
|
var path = require("path");
|
2013-03-27 14:28:51 -05:00
|
|
|
|
|
|
|
function getTimeString() {
|
2013-05-04 11:43:38 -05:00
|
|
|
var d = new Date();
|
|
|
|
return d.toDateString() + " " + d.toTimeString().split(" ")[0];
|
2013-03-27 14:28:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
var Logger = function(filename) {
|
|
|
|
this.filename = filename;
|
2013-07-28 17:25:06 -04:00
|
|
|
this.writer = fs.createWriteStream(filename, {
|
|
|
|
flags: "a",
|
|
|
|
encoding: "utf-8"
|
|
|
|
});
|
2013-03-27 14:28:51 -05:00
|
|
|
}
|
|
|
|
|
2013-07-28 17:25:06 -04:00
|
|
|
Logger.prototype.log = function () {
|
2013-07-29 19:32:51 -04:00
|
|
|
var msg = "";
|
|
|
|
for(var i in arguments)
|
|
|
|
msg += arguments[i];
|
|
|
|
|
2013-07-29 18:13:06 -04:00
|
|
|
if(this.dead) {
|
|
|
|
return;
|
|
|
|
}
|
2013-07-29 19:32:51 -04:00
|
|
|
|
2013-07-28 17:25:06 -04:00
|
|
|
var str = "[" + getTimeString() + "] " + msg + "\n";
|
2013-07-29 19:59:52 -04:00
|
|
|
try {
|
|
|
|
this.writer.write(str);
|
|
|
|
} catch(e) {
|
|
|
|
errlog.log("WARNING: Attempted logwrite failed: " + this.filename);
|
|
|
|
errlog.log("Message was: " + msg);
|
|
|
|
errlog.log(e);
|
|
|
|
}
|
2013-03-27 14:28:51 -05:00
|
|
|
}
|
|
|
|
|
2013-07-28 17:25:06 -04:00
|
|
|
Logger.prototype.close = function () {
|
2013-07-29 19:59:52 -04:00
|
|
|
try {
|
|
|
|
this.writer.end();
|
|
|
|
} catch(e) {
|
|
|
|
errlog.log("Log close failed: " + this.filename);
|
2013-07-29 18:16:11 -04:00
|
|
|
}
|
2013-03-27 14:28:51 -05:00
|
|
|
}
|
|
|
|
|
2014-01-27 18:37:48 -06:00
|
|
|
function makeConsoleLogger(filename) {
|
|
|
|
var log = new Logger(filename);
|
|
|
|
log._log = log.log;
|
|
|
|
log.log = function () {
|
|
|
|
console.log.apply(console, arguments);
|
|
|
|
this._log.apply(this, arguments);
|
|
|
|
}
|
|
|
|
return log;
|
|
|
|
}
|
|
|
|
|
|
|
|
var errlog = makeConsoleLogger(path.join(__dirname, "..", "error.log"));
|
|
|
|
var syslog = makeConsoleLogger(path.join(__dirname, "..", "sys.log"));
|
|
|
|
var eventlog = makeConsoleLogger(path.join(__dirname, "..", "events.log"));
|
2013-03-27 14:28:51 -05:00
|
|
|
|
|
|
|
exports.Logger = Logger;
|
|
|
|
exports.errlog = errlog;
|
|
|
|
exports.syslog = syslog;
|
2014-02-01 13:03:08 -06:00
|
|
|
exports.eventlog = eventlog;
|