<?php set_include_path(__DIR__.'/../airtime_mvc/library' . PATH_SEPARATOR . get_include_path()); require_once('Zend/Loader/Autoloader.php'); $autoloader = Zend_Loader_Autoloader::getInstance(); $log_files = array("media-monitor" => "/var/log/airtime/media-monitor/media-monitor.log", "show-recorder" => "/var/log/airtime/show-recorder/show-recorder.log", "playout" => "/var/log/airtime/pypo/pypo.log", "web" => "/var/log/airtime/zendphp.log"); function printUsage($opts, $userMsg) { $msg = $opts->getUsageMessage(); echo $userMsg; echo PHP_EOL."Usage: airtime-log [options]"; echo substr($msg, strpos($msg, "\n")).PHP_EOL; } function isKeyValid($key){ global $log_files; return array_key_exists($key, $log_files); } function viewSpecificLog($key){ global $log_files; if (isKeyValid($key)){ echo "Viewing $key log\n"; pcntl_exec(exec("which less"), array($log_files[$key])); pcntl_wait($status); } } function dumpAllLogs(){ $dateStr = gmdate("Y-m-d-H-i-s"); $filename = __DIR__."/airtime-log-all-$dateStr.tgz"; echo "Creating Airtime logs tgz file at $filename"; $command = "tar cfz $filename /var/log/airtime 2>/dev/null"; exec($command); } function dumpSpecificLog($key){ global $log_files; if (isKeyValid($key)){ $dateStr = gmdate("Y-m-d-H-i-s"); $filename = __DIR__."/airtime-log-$key-$dateStr.tgz"; echo "Creating Airtime logs tgz file at $filename"; $dir = dirname($log_files[$key]); $command = "tar cfz $filename $dir 2>/dev/null"; exec($command); } } function tailAllLogs(){ global $log_files; echo "Tail all Airtime logs"; pcntl_exec(exec("which multitail"), $log_files); pcntl_wait($status); } function tailSpecificLog($key){ global $log_files; if (isKeyValid($key)){ echo "Tail $key log"; pcntl_exec(exec("which tail"), array("-F", $log_files[$key])); pcntl_wait($status); } } try { $opts = new Zend_Console_Getopt( array( 'view|v-s' => "Display log file\n" ."\t\tmediamonitor|playout|recorder|web (ALL by default)", 'dump|d-s' => "Collect all log files and compress into a tarball\n" ."\t\tmediamonitor|playout|recorder|web (ALL by default)", 'tail|t-s' => "View any new entries appended to log files in real-time\n" ."\t\tmediamonitor|playout|recorder|web (ALL by default)" ) ); $opts->parse(); } catch (Zend_Console_Getopt_Exception $e) { print $e->getMessage() .PHP_EOL; printUsage($opts, ""); exit(1); } if (isset($opts->v)){ if ($opts->v === true){ echo "Please choose a specific log to view"; } else { viewSpecificLog($opts->v); } } else if (isset($opts->d)){ if ($opts->d === true){ dumpAllLogs(); } else { dumpSpecificLog($opts->d); } } else if (isset($opts->t)){ if ($opts->t === true){ tailAllLogs(); } else { tailSpecificLog($opts->t); } } echo PHP_EOL;