Skip to content

Instantly share code, notes, and snippets.

@kent013
Created February 3, 2015 06:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kent013/b73a63aa4b7cac0a4d51 to your computer and use it in GitHub Desktop.
Save kent013/b73a63aa4b7cac0a4d51 to your computer and use it in GitHub Desktop.
ログを読むやつ
<?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