indiaai-hackathon
/
datalab
/web
/node_modules
/bunyan-rotating-file-stream
/lib
/thresholdtrigger.js
| ; | |
| var fs = require('fs'); | |
| var EventEmitter = require('events').EventEmitter; | |
| var _ = require('lodash'); | |
| var optionParser = require('./optionParser'); | |
| function ThresholdTrigger(options) { | |
| var base = new EventEmitter(); | |
| var threshold = 10485760; // 10 MB | |
| var bytesWritten = 0; | |
| function newFile(data) { | |
| bytesWritten = data.stats.size; | |
| } | |
| function logWrite(data) { | |
| if ((bytesWritten > 0) && (bytesWritten + data.logSize > threshold)) { | |
| var date = null; | |
| try { | |
| var log = JSON.parse(data.logstr); | |
| date = log.time; | |
| } catch (e) {} | |
| base.emit('rotate', {date: date}); | |
| } else { | |
| bytesWritten += data.logSize; | |
| } | |
| } | |
| function shutdown() { | |
| } | |
| threshold = optionParser.parseSize(options.threshold); | |
| return _.extend({}, { | |
| newFile: newFile, | |
| logWrite: logWrite, | |
| shutdown: shutdown | |
| }, base); | |
| } | |
| module.exports = ThresholdTrigger; | |