$file) { if (in_array ($file,array (".", "..", ".gitkeep", $todayFileName))) { continue; } if (!is_dir($dir . $file)) { if (strtotime(str_replace(".log", "", $file)) < (strtotime("now") - $seconds)) { unlink ($dir . $file); } } else { $this->cleaningDir ($dir . $file . "/", $seconds); } } } public function purge ($days) { $seconds = $days * 86400; $this->cleaningDir ('../logs/', $seconds); } public static function getStats(){ $stats = array( 'ERROR' => 0, 'WARNING' => 0, 'EXEPTION' => 0, 'INFO' => 0, ); $result = array(); $result = self::logFinder ('../logs/', $result); foreach ($result as $path => $files) { foreach ($files as $file) { # code... $matches = array(); $re = '/\[(?:warning|error|info)\]/'; $str = file_get_contents($path . $file); preg_match_all($re, $str, $matches); if (count($matches[0]) == 0) continue; foreach ($matches[0] as $match) { switch($match){ case '[error]': $stats['ERROR']++; break; case '[warning]': $stats['WARNING']++; break; case '[exeption]': $stats['EXEPTION']++; break; default: $stats['INFO']++; break; } } } } return $stats; } private static function logFinder ($dir, $result) { $logFiles = scandir ($dir); foreach ($logFiles as $key => $file) { if (in_array ($file,array (".", "..", ".gitkeep"))) { continue; } if (!is_dir($dir . $file)) { $result[$dir][] = $file; } else { $result = self::logFinder ($dir . $file . "/", $result); } } return $result; } }