Cscott has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/108729


Change subject: Only log to syslog when --syslog CLI option is passed.
......................................................................

Only log to syslog when --syslog CLI option is passed.

This avoids spamming syslog during development.

We also switch to using the same node-syslog infrastructure as
mw-ocg-latexer, ensuring (for instance) that we log all status information
even when neither -D nor --verbose is passed on the command line.

Change-Id: I7fa067c8991b4a71d44d49082df35f3dfa46dd98
---
M bin/mw-ocg-bundler
M lib/index.js
M package.json
3 files changed, 42 insertions(+), 16 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Collection/OfflineContentGenerator/bundler
 refs/changes/29/108729/1

diff --git a/bin/mw-ocg-bundler b/bin/mw-ocg-bundler
index bb3a726..24dd2aa 100755
--- a/bin/mw-ocg-bundler
+++ b/bin/mw-ocg-bundler
@@ -6,7 +6,7 @@
 var bundler = require('../');
 var fs = require('fs');
 var when = require('when');
-require('rconsole');
+var util = require('util');
 
 var P = require('../lib/p');
 
@@ -41,7 +41,9 @@
        .option('-v, --verbose',
                        'Print verbose progress information')
        .option('-D, --debug',
-                       'Turn on debugging features (eg, full stack traces on 
exceptions)');
+                       'Turn on debugging features (eg, full stack traces on 
exceptions)')
+       .option('--syslog',
+                       'Log errors using syslog (for production deployments)');
 program.on('--help', function() {
        console.log('  If -o is omitted, creates bundle.zip');
        console.log('  The -m option can be used instead of specifying titles');
@@ -62,6 +64,28 @@
        console.error('Too many arguments.');
        return 1;
 }
+
+var Syslog = program.syslog ? require('node-syslog') : {
+       init: function() { },
+       log: function() { },
+       close: function() { }
+};
+Syslog.init(bundler.name, Syslog.LOG_PID | Syslog.LOG_ODELAY,
+                       Syslog.LOG_LOCAL0);
+
+var log = function() {
+       // en/disable log messages here
+       if (program.verbose || program.debug) {
+               console.error.apply(console, arguments);
+       }
+       try {
+               Syslog.log(Syslog.LOG_INFO, util.format.apply(this, arguments));
+       } catch (err) {
+               // This should never happen!  But don't try to convert arguments
+               // toString() if it does, since that might fail too.
+               Syslog.log(Syslog.LOG_ERR, "Could not format message! "+err);
+       }
+};
 
 var p = when.resolve();
 
@@ -95,23 +119,27 @@
        return bundler.bundle(metabook, {
                nozip: !!program.directory,
                output: program.directory || program.output,
-               verbose: !!program.verbose,
                debug: !!program.debug,
                compat: !!program.compat, // pediapress compatibility
                follow: !!program.follow, // follow redirects
                parsoid: program.api,
                toc: program.toc,
-               size: program.size
+               size: program.size,
+               log: log
        });
 }).then(function(status) {
+       Syslog.close();
        process.exit(status);
 });
 
 p.done(null, function(err) {
     if (program.debug && err.stack) {
         console.error(err.stack);
+               Syslog.log(Syslog.LOG_ERR, err.stack);
     } else {
         console.error(err);
+               Syslog.log(Syslog.LOG_ERR, err);
     }
+       Syslog.close();
     process.exit(1);
 });
diff --git a/lib/index.js b/lib/index.js
index 3aa6e7d..95e115d 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,5 +1,7 @@
 require('es6-shim'); // Map/Set support
 
+var json = require('../package.json');
+
 var fs = require('fs');
 var path = require('path');
 var rimraf = require('rimraf');
@@ -24,7 +26,8 @@
 var MAX_REDIRECTS = 5;
 
 module.exports = {
-       version: require('../package.json').version
+       name: json.name, // package name
+       version: json.version // version # for this package
 };
 
 // allow access to the metabook creation/repair functions
@@ -32,16 +35,11 @@
 
 // returns a promise to create the given bundle
 module.exports.bundle = function(metabook, options) {
-
-       var log = function() {
-               if (options.verbose || options.debug) {
-                       console.error.apply(console, arguments);
-               }
-       };
-
        var status = options.status = new StatusReporter(5, function(msg) {
-               var file = msg.file ? (': ' + msg.file) : '';
-               log('['+msg.percent.toFixed()+'%]', msg.status + file);
+               if (options.log) {
+                       var file = msg.file ? (': ' + msg.file) : '';
+                       options.log('['+msg.percent.toFixed()+'%]', msg.status 
+ file);
+               }
        });
 
 
diff --git a/package.json b/package.json
index 57de885..bbbebd3 100644
--- a/package.json
+++ b/package.json
@@ -15,12 +15,12 @@
     "commander": "~2.1.0",
     "domino": "~1.0.13",
     "es6-shim": "~0.9.1",
+    "node-syslog": "~1.1.7",
     "request": "~2.31.0",
     "rimraf": "~2.2.2",
     "sqlite3": "~2.1.19",
     "tmp": "~0.0.21",
-    "when": "~2.7.0",
-    "rconsole": "~0.2.0"
+    "when": "~2.7.0"
   },
   "devDependencies": {
     "mocha": "~1.17.0"

-- 
To view, visit https://gerrit.wikimedia.org/r/108729
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7fa067c8991b4a71d44d49082df35f3dfa46dd98
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator/bundler
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to