diff --git a/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php b/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php --- a/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php +++ b/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php @@ -550,11 +550,18 @@ } private function getStartCommand(array $server_argv) { + $launch_argv = array(); + + if ($this->debug) { + $launch_argv[] = '--debug=1'; + } + return csprintf( - '%R %Ls -- %s %Ls', + '%R %Ls -- %s %Ls %Ls', $this->getNodeBinary(), $this->getNodeArgv(), $this->getAphlictScriptPath(), + $launch_argv, $server_argv); } diff --git a/support/aphlict/server/aphlict_server.js b/support/aphlict/server/aphlict_server.js --- a/support/aphlict/server/aphlict_server.js +++ b/support/aphlict/server/aphlict_server.js @@ -9,6 +9,7 @@ function parse_command_line_arguments(argv) { var args = { test: false, + debug: false, config: null }; @@ -34,12 +35,16 @@ require('./lib/AphlictLog'); -var debug = new JX.AphlictLog() - .addConsole(console); +var debug = new JX.AphlictLog(); var args = parse_command_line_arguments(process.argv); var config = parse_config(args); +if (args.test || args.debug) { + debug.addConsole(console); + debug.setTrace(true); +} + function set_exit_code(code) { process.on('exit', function() { process.exit(code); diff --git a/support/aphlict/server/lib/AphlictAdminServer.js b/support/aphlict/server/lib/AphlictAdminServer.js --- a/support/aphlict/server/lib/AphlictAdminServer.js +++ b/support/aphlict/server/lib/AphlictAdminServer.js @@ -4,7 +4,6 @@ require('./AphlictListenerList'); -var http = require('http'); var url = require('url'); JX.install('AphlictAdminServer', { @@ -54,6 +53,17 @@ return this; }, + trace: function() { + var logger = this.getLogger(); + if (!logger) { + return; + } + + logger.trace.apply(logger, arguments); + + return this; + }, + listen: function() { return this._server.listen.apply(this._server, arguments); }, @@ -76,7 +86,7 @@ try { var msg = JSON.parse(body); - self.log( + self.trace( 'Received notification (' + instance + '): ' + JSON.stringify(msg)); ++self._messagesIn; @@ -201,13 +211,13 @@ listener.writeMessage(message); ++this._messagesOut; - this.log( + this.trace( '<%s> Wrote Message', listener.getDescription()); } catch (error) { list.removeListener(listener); - this.log( + this.trace( '<%s> Write Error: %s', listener.getDescription(), error); diff --git a/support/aphlict/server/lib/AphlictClientServer.js b/support/aphlict/server/lib/AphlictClientServer.js --- a/support/aphlict/server/lib/AphlictClientServer.js +++ b/support/aphlict/server/lib/AphlictClientServer.js @@ -3,7 +3,6 @@ var JX = require('./javelin').JX; require('./AphlictListenerList'); -require('./AphlictLog'); var url = require('url'); var util = require('util'); @@ -60,6 +59,17 @@ return this; }, + trace: function() { + var logger = this.getLogger(); + if (!logger) { + return; + } + + logger.trace.apply(logger, arguments); + + return this; + }, + _onrequest: function(request, response) { // The websocket code upgrades connections before they get here, so // this only handles normal HTTP connections. We just fail them with @@ -104,17 +114,24 @@ var listener = self.getListenerList(instance).addListener(ws); - function log() { - self.log( - util.format('<%s>', listener.getDescription()) + + function msg(argv) { + return util.format('<%s>', listener.getDescription()) + ' ' + - util.format.apply(null, arguments)); + util.format.apply(null, argv); + } + + function log() { + self.log(msg(arguments)); } - log('Connected from %s.', ws._socket.remoteAddress); + function trace() { + self.trace(msg(arguments)); + } + + trace('Connected from %s.', ws._socket.remoteAddress); ws.on('message', function(data) { - log('Received message: %s', data); + trace('Received message: %s', data); var message; try { @@ -126,14 +143,14 @@ switch (message.command) { case 'subscribe': - log( + trace( 'Subscribed to: %s', JSON.stringify(message.data)); listener.subscribe(message.data); break; case 'unsubscribe': - log( + trace( 'Unsubscribed from: %s', JSON.stringify(message.data)); listener.unsubscribe(message.data); @@ -180,7 +197,7 @@ ws.on('close', function() { self.getListenerList(instance).removeListener(listener); - log('Disconnected.'); + trace('Disconnected.'); }); }); diff --git a/support/aphlict/server/lib/AphlictLog.js b/support/aphlict/server/lib/AphlictLog.js --- a/support/aphlict/server/lib/AphlictLog.js +++ b/support/aphlict/server/lib/AphlictLog.js @@ -14,6 +14,12 @@ members: { _consoles: null, _logs: null, + _trace: null, + + setTrace: function(trace) { + this._trace = trace; + return this; + }, addConsole: function(console) { this._consoles.push(console); @@ -29,6 +35,14 @@ return this; }, + trace: function() { + if (!this._trace) { + return; + } + + return this.log.apply(this, arguments); + }, + log: function() { var str = util.format.apply(null, arguments); var date = new Date().toLocaleString();