diff --git a/utils/airtime-log.php b/utils/airtime-log.php new file mode 100644 index 000000000..daa471f57 --- /dev/null +++ b/utils/airtime-log.php @@ -0,0 +1,113 @@ + "/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; +