diff --git a/classes/Kohana/Log/Filter/Body.php b/classes/Kohana/Log/Filter/Body.php new file mode 100644 index 000000000..2c9b2ad96 --- /dev/null +++ b/classes/Kohana/Log/Filter/Body.php @@ -0,0 +1,42 @@ +regex_pattern = $regex_pattern; + } + + public function process(array $messages) + { + $filtered = array(); + + foreach ($messages as $message) + { + if (preg_match($this->regex_pattern, $message['body'])) + { + $filtered[] = $message; + } + } + + return $filtered; + } + +} diff --git a/classes/Kohana/Log/Filter/Exception.php b/classes/Kohana/Log/Filter/Exception.php new file mode 100644 index 000000000..de07fe993 --- /dev/null +++ b/classes/Kohana/Log/Filter/Exception.php @@ -0,0 +1,46 @@ +exception = $exception; + } + + public function process(array $messages) + { + $filtered = array(); + + foreach ($messages as $message) + { + if ( + (isset($message['exception'])) + AND + ($message['exception'] instanceof $this->exception) + ) + { + $filtered[] = $message; + } + } + + return $filtered; + } + +} diff --git a/classes/Kohana/Log/Filter/File.php b/classes/Kohana/Log/Filter/File.php new file mode 100644 index 000000000..950476a00 --- /dev/null +++ b/classes/Kohana/Log/Filter/File.php @@ -0,0 +1,42 @@ +regex_pattern = $regex_pattern; + } + + public function process(array $messages) + { + $filtered = array(); + + foreach ($messages as $message) + { + if (preg_match($this->regex_pattern, $message['file'])) + { + $filtered[] = $message; + } + } + + return $filtered; + } + +} diff --git a/classes/Kohana/Log/Filter/Union.php b/classes/Kohana/Log/Filter/Union.php new file mode 100644 index 000000000..8b5a5ea22 --- /dev/null +++ b/classes/Kohana/Log/Filter/Union.php @@ -0,0 +1,68 @@ +attach_filter($filter); + } + } + + public function process(array $messages) + { + $filtered = array(); + + foreach ($this->filters as $filter) + { + $filtered[] = $filter->process($messages); + } + + return array_unique($filtered); + } + + /** + * Ataches a log filter + * + * @param Kohana_Log_Filter $filter + * @return Log_Filter_Union + */ + public function attach_filter(Kohana_Log_Filter $filter) + { + $this->filters[spl_object_hash($filter)] = $filter; + + return $this; + } + + /** + * Detaches a log filter + * + * @param Kohana_Log_Filter $filter + * @return Log_Filter_Union + */ + public function detach_filter(Kohana_Log_Filter $filter) + { + unset($this->filters[spl_object_hash($filter)]); + + return $this; + } + + public function filter(array $messages) + { + return $this->process($messages); + } +} diff --git a/classes/Log/Filter/Body.php b/classes/Log/Filter/Body.php new file mode 100644 index 000000000..db0bf2543 --- /dev/null +++ b/classes/Log/Filter/Body.php @@ -0,0 +1,3 @@ +