/yii/framework/logging/CLogRoute.php
https://github.com/joshuaswarren/weatherhub · PHP · 115 lines · 29 code · 6 blank · 80 comment · 3 complexity · 39460d9fca496e7a6b860dc7b7b2bc05 MD5 · raw file
- <?php
- /**
- * CLogRoute class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright Copyright © 2008-2011 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- /**
- * CLogRoute is the base class for all log route classes.
- *
- * A log route object retrieves log messages from a logger and sends it
- * somewhere, such as files, emails.
- * The messages being retrieved may be filtered first before being sent
- * to the destination. The filters include log level filter and log category filter.
- *
- * To specify level filter, set {@link levels} property,
- * which takes a string of comma-separated desired level names (e.g. 'Error, Debug').
- * To specify category filter, set {@link categories} property,
- * which takes a string of comma-separated desired category names (e.g. 'System.Web, System.IO').
- *
- * Level filter and category filter are combinational, i.e., only messages
- * satisfying both filter conditions will they be returned.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: CLogRoute.php 3205 2011-05-07 23:16:46Z qiang.xue $
- * @package system.logging
- * @since 1.0
- */
- abstract class CLogRoute extends CComponent
- {
- /**
- * @var boolean whether to enable this log route. Defaults to true.
- * @since 1.0.7
- */
- public $enabled=true;
- /**
- * @var string list of levels separated by comma or space. Defaults to empty, meaning all levels.
- */
- public $levels='';
- /**
- * @var string list of categories separated by comma or space. Defaults to empty, meaning all categories.
- */
- public $categories='';
- /**
- * @var mixed the additional filter (eg {@link CLogFilter}) that can be applied to the log messages.
- * The value of this property will be passed to {@link Yii::createComponent} to create
- * a log filter object. As a result, this can be either a string representing the
- * filter class name or an array representing the filter configuration.
- * In general, the log filter class should be {@link CLogFilter} or a child class of it.
- * Defaults to null, meaning no filter will be used.
- * @since 1.0.6
- */
- public $filter;
- /**
- * @var array the logs that are collected so far by this log route.
- * @since 1.1.0
- */
- public $logs;
- /**
- * Initializes the route.
- * This method is invoked after the route is created by the route manager.
- */
- public function init()
- {
- }
- /**
- * Formats a log message given different fields.
- * @param string $message message content
- * @param integer $level message level
- * @param string $category message category
- * @param integer $time timestamp
- * @return string formatted message
- */
- protected function formatLogMessage($message,$level,$category,$time)
- {
- return @date('Y/m/d H:i:s',$time)." [$level] [$category] $message\n";
- }
- /**
- * Retrieves filtered log messages from logger for further processing.
- * @param CLogger $logger logger instance
- * @param boolean $processLogs whether to process the logs after they are collected from the logger
- */
- public function collectLogs($logger, $processLogs=false)
- {
- $logs=$logger->getLogs($this->levels,$this->categories);
- $this->logs=empty($this->logs) ? $logs : array_merge($this->logs,$logs);
- if($processLogs && !empty($this->logs))
- {
- if($this->filter!==null)
- Yii::createComponent($this->filter)->filter($this->logs);
- $this->processLogs($this->logs);
- $this->logs=array();
- }
- }
- /**
- * Processes log messages and sends them to specific destination.
- * Derived child classes must implement this method.
- * @param array $logs list of messages. Each array elements represents one message
- * with the following structure:
- * array(
- * [0] => message (string)
- * [1] => level (string)
- * [2] => category (string)
- * [3] => timestamp (float, obtained by microtime(true));
- */
- abstract protected function processLogs($logs);
- }