_logs[]=array($message,$level,$category,time()); } public function getLogs($levels=null,$categories=null) { $this->_levels=$levels; $this->_categories=$categories; if(empty($levels) && empty($categories)) return $this->_logs; else if(empty($levels)) return array_values(array_filter(array_filter($this->_logs,array($this,'filterByCategories')))); else if(empty($categories)) return array_values(array_filter(array_filter($this->_logs,array($this,'filterByLevels')))); else { $ret=array_values(array_filter(array_filter($this->_logs,array($this,'filterByLevels')))); return array_values(array_filter(array_filter($ret,array($this,'filterByCategories')))); } } private function filterByCategories($value) { foreach($this->_categories as $category) { if(strpos($value[2],$category)===0) return $value; } return false; } private function filterByLevels($value) { if($value[1] & $this->_levels) return $value; else return false; } } ?>