Created
February 3, 2015 06:04
-
-
Save kent013/b73a63aa4b7cac0a4d51 to your computer and use it in GitHub Desktop.
ログを読むやつ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$dir = _getArgOrDie("dir", "needs dir option"); | |
$date = _getArgOrDie("date", "needs date"); | |
$range = _getArg("range", 3600); | |
$date = strtotime(trim($date)); | |
$logfiles = glob("$dir/*/*"); | |
$out = false; | |
$timere = '/(([0-9: ]+ )?(Jan|JAN|Feb|FEB|Mar|MAR|Apr|APR|May|MAY|Jun|JUN|Jul|JUL|Aug|AUG|Sep|SEP|Oct|OCT|Nov|NOV|Dec|DEC)[0-9: ]+ |(?=\[)?(201[0-9][^ \]]+))/'; | |
foreach($logfiles as $logfile){ | |
$lines = file($logfile); | |
if(!isset($lines[0])){ | |
continue; | |
} | |
$output = []; | |
foreach($lines as $line){ | |
if(!preg_match($timere, $line, $regs)){ | |
continue; | |
} | |
$logdate = strtotime(trim($regs[1])); | |
if($logdate - $date > 0 && $logdate - $date < $range){ | |
$line = preg_replace($timere, '', $line); | |
$line = date('[Y/m/d H:i:s] ', $logdate) . $line; | |
$output[] = trim($line); | |
} | |
} | |
if(count($output)){ | |
if($out){ | |
echo "\n\n"; | |
} | |
echo "$logfile\n"; | |
echo implode("\n", $output); | |
$out = true; | |
} | |
} | |
echo "\n"; | |
//get arg or die | |
function _getArgOrDie($name, $message){ | |
$value = _getArg($name); | |
if(is_null($value)){ | |
_error($message); | |
} | |
return $value; | |
} | |
//find command line argument | |
function _findArgFlag($name){ | |
$argv = $_SERVER['argv']; | |
foreach($argv as $v){ | |
if(preg_match('/(-+)' . $name . '/', $v)){ | |
return true; | |
} | |
} | |
return false; | |
} | |
//get command line argument | |
function _getArg($name, $default = null){ | |
$argv = $_SERVER['argv']; | |
foreach($argv as $k => $v){ | |
if(preg_match('/(-+)' . $name . '$/', $v) && | |
isset($argv[$k + 1])){ | |
return $argv[$k + 1]; | |
} | |
} | |
return $default; | |
} | |
//print message | |
function _msg($msg, $indent = 0){ | |
$sp = ''; | |
for ($i = 0; $i < $indent; $i++){ | |
$sp .= ' '; | |
} | |
echo $sp . $msg . "\n"; | |
} | |
//print info message | |
function _info($msg, $indent = 0){ | |
$date = date('Y/m/d H:i:s'); | |
$msg = '[INFO] ' . $date . " : " . $msg; | |
_msg($msg, $indent); | |
} | |
//print warn message | |
function _warn($msg, $indent = 0){ | |
$date = date('Y/m/d H:i:s'); | |
$msg = '[WARN] ' . $date . " : " . $msg; | |
_msg($msg, $indent); | |
} | |
//print error message | |
function _error($msg, $indent = 0){ | |
$date = date('Y/m/d H:i:s'); | |
$msg = '[FATAL] ' . $date . " : " . $msg; | |
_exit($msg, $indent); | |
} | |
//print exit message | |
function _exit($msg, $indent = 0){ | |
_msg($msg, $indent); | |
exit; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment