Working date rolling file stream
This commit is contained in:
@@ -2,18 +2,20 @@ var fs = require('fs'),
|
||||
util = require('util');
|
||||
|
||||
function debug(message) {
|
||||
// util.debug(message);
|
||||
// console.log(message);
|
||||
}
|
||||
|
||||
module.exports = BaseRollingFileStream;
|
||||
|
||||
function BaseRollingFileStream(filename, options) {
|
||||
|
||||
debug("In BaseRollingFileStream");
|
||||
this.filename = filename;
|
||||
this.options = options || { encoding: 'utf8', mode: 0644, flags: 'a' };
|
||||
this.rolling = false;
|
||||
this.writesWhileRolling = [];
|
||||
this.currentSize = 0;
|
||||
this.rollBeforeWrite = false;
|
||||
|
||||
function currentFileSize(file) {
|
||||
var fileSize = 0;
|
||||
@@ -32,7 +34,7 @@ function BaseRollingFileStream(filename, options) {
|
||||
}
|
||||
|
||||
throwErrorIfArgumentsAreNotValid();
|
||||
|
||||
debug("Calling BaseRollingFileStream.super");
|
||||
BaseRollingFileStream.super_.call(this, this.filename, this.options);
|
||||
this.currentSize = currentFileSize(this.filename);
|
||||
}
|
||||
@@ -67,18 +69,24 @@ BaseRollingFileStream.prototype.initRolling = function() {
|
||||
};
|
||||
|
||||
BaseRollingFileStream.prototype.write = function(data, encoding) {
|
||||
var canWrite = false;
|
||||
if (this.rolling) {
|
||||
this.writesWhileRolling.push({ data: data, encoding: encoding });
|
||||
return false;
|
||||
} else {
|
||||
var canWrite = BaseRollingFileStream.super_.prototype.write.call(this, data, encoding);
|
||||
this.currentSize += data.length;
|
||||
debug('current size = ' + this.currentSize);
|
||||
if (this.shouldRoll()) {
|
||||
if (this.rollBeforeWrite && this.shouldRoll()) {
|
||||
this.writesWhileRolling.push({ data: data, encoding: encoding });
|
||||
this.initRolling();
|
||||
} else {
|
||||
canWrite = BaseRollingFileStream.super_.prototype.write.call(this, data, encoding);
|
||||
this.currentSize += data.length;
|
||||
debug('current size = ' + this.currentSize);
|
||||
|
||||
if (!this.rollBeforeWrite && this.shouldRoll()) {
|
||||
this.initRolling();
|
||||
}
|
||||
}
|
||||
return canWrite;
|
||||
}
|
||||
return canWrite;
|
||||
};
|
||||
|
||||
BaseRollingFileStream.prototype.shouldRoll = function() {
|
||||
|
||||
Reference in New Issue
Block a user