UNPKG

glutenfree

Version:

A profiler/loganalyzer for nginx/Cetrea Aw.

93 lines (78 loc) 2.24 kB
// Generated by CoffeeScript 1.6.3 var argv, byline, entries, file, fs, lineno, parsers, postProcess, stats, stream, util, _, _i, _len, _ref, _this = this; fs = require("fs"); byline = require("byline"); util = require("util"); _ = require("underscore"); argv = require('optimist').usage('Usage: $0 -i [inputfile] -o [outputfile] -p [parser]').demand(["i", "o"]).argv; parsers = []; _ref = fs.readdirSync("LineParsers"); for (_i = 0, _len = _ref.length; _i < _len; _i++) { file = _ref[_i]; if (file.match(/.*\.js/)) { (function(file) { var p; p = require("./LineParsers/" + file).parser; if (((argv.p != null) && file.match(argv.p)) || !argv.p) { console.log("loaded '" + file + "' parser"); return parsers.push(p); } })(file); } } stream = byline(fs.createReadStream(argv.i)); postProcess = function(stats) { var id, info, _ref1, _results; _ref1 = stats.uniques; _results = []; for (id in _ref1) { info = _ref1[id]; _results.push((function(id, info) { return info.percent = (info.count / stats.total) * 100; })(id, info)); } return _results; }; entries = []; stats = { total: 0, uniques: {} }; lineno = 0; console.clear = function(msg) { return process.stdout.write("" + msg + "\r"); }; stream.on("data", function(line) { var parsed, parser, _base, _base1, _j, _len1, _name, _results; console.clear("#" + (lineno++) + "/" + stats.total); _results = []; for (_j = 0, _len1 = parsers.length; _j < _len1; _j++) { parser = parsers[_j]; parsed = parser.parse(line); if (parsed) { stats.total++; if ((_base = stats.uniques)[_name = parsed.id] == null) { _base[_name] = parsed; } if ((_base1 = stats.uniques[parsed.id]).count == null) { _base1.count = 0; } stats.uniques[parsed.id].count++; break; } else { _results.push(void 0); } } return _results; }).on("end", function() { console.log("\r\npost processing"); postProcess(stats); return fs.writeFile(argv.o, JSON.stringify(stats), function(err) { if (err == null) { return console.log("done"); } else { return console.log("error writing to " + argv.o); } }); });