aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js
new file mode 100644
index 00000000..5ef2081f
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/log4js/lib/streams/DateRollingFileStream.js
@@ -0,0 +1,91 @@
+"use strict";
+var BaseRollingFileStream = require('./BaseRollingFileStream')
+, debug = require('../debug')('DateRollingFileStream')
+, format = require('../date_format')
+, fs = require('fs')
+, util = require('util');
+
+module.exports = DateRollingFileStream;
+
+function findTimestampFromFileIfExists(filename, now) {
+ return fs.existsSync(filename) ? fs.statSync(filename).mtime : new Date(now());
+}
+
+function DateRollingFileStream(filename, pattern, options, now) {
+ debug("Now is " + now);
+ if (pattern && typeof(pattern) === 'object') {
+ now = options;
+ options = pattern;
+ pattern = null;
+ }
+ this.pattern = pattern || '.yyyy-MM-dd';
+ this.now = now || Date.now;
+ this.lastTimeWeWroteSomething = format.asString(
+ this.pattern,
+ findTimestampFromFileIfExists(filename, this.now)
+ );
+
+ this.baseFilename = filename;
+ this.alwaysIncludePattern = false;
+
+ if (options) {
+ if (options.alwaysIncludePattern) {
+ this.alwaysIncludePattern = true;
+ filename = this.baseFilename + this.lastTimeWeWroteSomething;
+ }
+ delete options.alwaysIncludePattern;
+ if (Object.keys(options).length === 0) {
+ options = null;
+ }
+ }
+ debug("this.now is " + this.now + ", now is " + now);
+
+ DateRollingFileStream.super_.call(this, filename, options);
+}
+util.inherits(DateRollingFileStream, BaseRollingFileStream);
+
+DateRollingFileStream.prototype.shouldRoll = function() {
+ var lastTime = this.lastTimeWeWroteSomething,
+ thisTime = format.asString(this.pattern, new Date(this.now()));
+
+ debug("DateRollingFileStream.shouldRoll with now = " +
+ this.now() + ", thisTime = " + thisTime + ", lastTime = " + lastTime);
+
+ this.lastTimeWeWroteSomething = thisTime;
+ this.previousTime = lastTime;
+
+ return thisTime !== lastTime;
+};
+
+DateRollingFileStream.prototype.roll = function(filename, callback) {
+ var that = this;
+
+ debug("Starting roll");
+
+ if (this.alwaysIncludePattern) {
+ this.filename = this.baseFilename + this.lastTimeWeWroteSomething;
+ this.closeTheStream(this.openTheStream.bind(this, callback));
+ } else {
+ var newFilename = this.baseFilename + this.previousTime;
+ this.closeTheStream(
+ deleteAnyExistingFile.bind(null,
+ renameTheCurrentFile.bind(null,
+ this.openTheStream.bind(this,
+ callback))));
+ }
+
+ function deleteAnyExistingFile(cb) {
+ //on windows, you can get a EEXIST error if you rename a file to an existing file
+ //so, we'll try to delete the file we're renaming to first
+ fs.unlink(newFilename, function (err) {
+ //ignore err: if we could not delete, it's most likely that it doesn't exist
+ cb();
+ });
+ }
+
+ function renameTheCurrentFile(cb) {
+ debug("Renaming the " + filename + " -> " + newFilename);
+ fs.rename(filename, newFilename, cb);
+ }
+
+};