From b61e325f057b90196bc81ea08af618331a80950c Mon Sep 17 00:00:00 2001 From: epriestley Date: Sun, 26 Jun 2011 20:14:11 -0700 Subject: [PATCH] Show logs to the console in 'phd debug' Summary: Currently we send logs to the logfile in 'phd debug', but we should send them to the console instead. Also fixed some %C stuff which could theoretically cause problems if a user had percentage symbols in their paths (heaven forbid). fratrik, this or D535 might have been involved in frustrating your efforts to debug the "sudo" stuff. Test Plan: Ran "phd debug irc derpderp" and "phd launch irc derpderp". In the former case, the exception appeared in the console. In the latter, it appeared in the log. Reviewed By: codeblock Reviewers: codeblock, jungejason, tuomaspelkonen, aran, fratrik CC: aran, codeblock Differential Revision: 536 --- .../daemon/phabricator_daemon_launcher.php | 18 ++++++++++++++---- .../control/PhabricatorDaemonControl.php | 19 +++++++++++++------ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/scripts/daemon/phabricator_daemon_launcher.php b/scripts/daemon/phabricator_daemon_launcher.php index 8283103b7f..ff6532bd61 100755 --- a/scripts/daemon/phabricator_daemon_launcher.php +++ b/scripts/daemon/phabricator_daemon_launcher.php @@ -163,7 +163,15 @@ switch (isset($argv[1]) ? $argv[1] : 'help') { $daemon = reset($match); } - will_launch($control); + $with_logs = true; + if ($is_debug) { + // In debug mode, we emit errors straight to stdout, so nothing useful + // will show up in the logs. Don't echo the message about stuff showing + // up in them, since it would be confusing. + $with_logs = false; + } + + will_launch($control, $with_logs); if ($is_debug) { echo "Launching {$daemon} in debug mode (nondaemonized)...\n"; @@ -217,10 +225,12 @@ function phd_load_tracked_repositories() { return $repositories; } -function will_launch($control) { +function will_launch($control, $with_logs = true) { echo "Staging launch...\n"; $control->pingConduit(); - $log_dir = $control->getControlDirectory('log').'/daemons.log'; - echo "NOTE: Logs will appear in '{$log_dir}'.\n\n"; + if ($with_logs) { + $log_dir = $control->getControlDirectory('log').'/daemons.log'; + echo "NOTE: Logs will appear in '{$log_dir}'.\n\n"; + } } diff --git a/src/infrastructure/daemon/control/PhabricatorDaemonControl.php b/src/infrastructure/daemon/control/PhabricatorDaemonControl.php index 938d890fba..f0549ca9c3 100644 --- a/src/infrastructure/daemon/control/PhabricatorDaemonControl.php +++ b/src/infrastructure/daemon/control/PhabricatorDaemonControl.php @@ -216,17 +216,24 @@ EOHELP "./launch_daemon.php ". "%s ". "--load-phutil-library=%s ". - implode(' ', $extra_libraries)." ". + "%C ". "--conduit-uri=%s ". "--phd=%s ". - "--log=%s ". - ($debug ? '--trace ' : '--daemonize '). - implode(' ', $argv), + ($debug ? '--trace ' : '--daemonize '), $daemon, phutil_get_library_root('phabricator'), + implode(' ', $extra_libraries), PhabricatorEnv::getURI('/api/'), - $pid_dir, - $log_dir); + $pid_dir); + + if (!$debug) { + // If we're running "phd debug", send output straight to the console + // instead of to a logfile. + $command = csprintf("%C --log=%s", $command, $log_dir); + } + + // Append the daemon's argv. + $command = csprintf("%C %C", $command, implode(' ', $argv)); if ($debug) { // Don't terminate when the user sends ^C; it will be sent to the