summaryrefslogtreecommitdiff
path: root/logger.js
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-10-27 23:52:13 +0200
committertomsmeding <tom.smeding@gmail.com>2017-10-27 23:52:13 +0200
commited678961148d8739a750f2b743cc11858b484b23 (patch)
tree7560e8932d9d2d98b9ed9c55114c5b345bd5ed72 /logger.js
parent8bed4192558aa91cd8fe1ba501200b1c111e43e9 (diff)
Add basic logging
Diffstat (limited to 'logger.js')
-rw-r--r--logger.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/logger.js b/logger.js
new file mode 100644
index 0000000..592342d
--- /dev/null
+++ b/logger.js
@@ -0,0 +1,35 @@
+var fs=require("fs");
+
+var MAX_VOLUME=16*1024*1024;
+
+function Logger(fname){
+ if(!(this instanceof Logger))throw new Error("Logger() called without 'new'");
+ this._fname=fname;
+ this._logstart=new Date();
+ this._currentfname=fname+"."+this._logstart.getTime();
+ this._volume=0;
+ this._stream=fs.createWriteStream(this._currentfname);
+ this._ok=true;
+}
+
+Logger.prototype.log=function log(line){
+ if(!this._ok)return;
+ var now=new Date();
+ var data=now.toISOString()+": "+line+"\n";
+ if(this._volume+data.length>MAX_VOLUME){
+ this._stream.end();
+ this._logstart=now;
+ this._currentfname=this._fname+"."+this._logstart.getTime();
+ this._volume=0;
+ this._stream=fs.createWriteStream(this._currentfname);
+ this._ok=true;
+ }
+ this._volume+=data.length;
+ if(!this._stream.write(data)){
+ console.log("WARNING: LOG STREAM '"+this._currentfname+"' NOT DRAINING!");
+ this._ok=false;
+ this._stream.once("drain",function(){this._ok=true;}.bind(this));
+ }
+};
+
+module.exports=Logger;