diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-10-27 23:52:13 +0200 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-10-27 23:52:13 +0200 |
commit | ed678961148d8739a750f2b743cc11858b484b23 (patch) | |
tree | 7560e8932d9d2d98b9ed9c55114c5b345bd5ed72 /logger.js | |
parent | 8bed4192558aa91cd8fe1ba501200b1c111e43e9 (diff) |
Add basic logging
Diffstat (limited to 'logger.js')
-rw-r--r-- | logger.js | 35 |
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; |