> YII 类库手册 > CLogRoute
system.logging
继承 abstract class CLogRoute » CComponent
子类 CDbLogRoute, CEmailLogRoute, CFileLogRoute, CWebLogRoute
源自 1.0
版本 $Id: CLogRoute.PHP 3515 2011-12-28 12:29:24Z mDOMba $
源码
CLogRoute是所有日志路由类的基类。

一个日志路由对象从一个日志记录器取回日志信息 并发送它到任何地方。例如文件,电子邮件。 取回的信息在发送给目录前可以被过滤。 过滤器包括日志等级过滤器和日志类别过滤器。

要指定等级过滤器, 指定 levels 属性, 它取得一个逗号分隔的等级名称的字符串 (例如 'Error, Debug')。 要指定类别过滤器,设置 categories 属性, 它取得一个逗号分隔的类别名称的字符串(例如'System.Web, System.IO')。

等级过滤器和类别过滤器是可以组合的 例如,只有同时满足过滤条件的消息,才返回。

公共属性

属性 类型 描述 定义在
categories string 被逗号或空格分隔的类别列表。默认为空,意味着所有类别。 CLogRoute
enabled boolean 是否启用这个日志路由。默认为true。 CLogRoute
filter mixed 附加过滤器 (例如 CLogFilter) 它被应用到日志信息。 这个属性的值被传递到 Yii::createComponent 创建一个日志过滤器对象。 结果,这可能是一个表示过滤器类名的字符串或一个表示过滤器配置的数组。

总之,日志过滤器类应该是 CLogFilter 或它的一个子类。 默认为null,意味着没有过滤器被使用。
CLogRoute
levels string 用逗号或空格分隔的等级列表。默认是空,意味着所有等级。 CLogRoute
logs array 到目前为止这个日志路由搜集的日志。 CLogRoute

公共方法

方法 描述 定义在
__call() 如果类中没有调的方法名,则调用这个方法。 CComponent
__get() 返回一个属性值、一个事件处理程序列表或一个行为名称。 CComponent
__isset() 检查一个属性是否为null。 CComponent
__set() 设置一个组件的属性值。 CComponent
__unset() 设置一个组件的属性为null。 CComponent
asa() 返回这个名字的行为对象。 CComponent
attachBehavior() 附加一个行为到组件。 CComponent
attachBehaviors() 附加一个行为列表到组件。 CComponent
attachEventHandler() 为事件附加一个事件处理程序。 CComponent
canGetProperty() 确定属性是否可读。 CComponent
canSetProperty() 确定属性是否可写。 CComponent
collectLogs() 从日志记录器取回已过滤的日志信息以便进一步处理。 CLogRoute
detachBehavior() 从组件中分离一个行为。 CComponent
detachBehaviors() 从组件中分离所有行为。 CComponent
detachEventHandler() 分离一个存在的事件处理程序。 CComponent
disableBehavior() 禁用一个附加行为。 CComponent
disableBehaviors() 禁用组件附加的所有行为。 CComponent
enableBehavior() 启用一个附加行为。 CComponent
enableBehaviors() 启用组件附加的所有行为。 CComponent
evaLuateExpression() 计算一个PHP表达式,或根据组件上下文执行回调。 CComponent
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
init() 初始化路由。 CLogRoute
raiseEvent() 发起一个事件。 CComponent

受保护方法

方法 描述 定义在
formatLogMessage() 格式化一条日志信息已给定不同字段。 CLogRoute
processLogs() 处理日志信息并发送它们到指定的目标。 CLogRoute

属性详细

categories 属性
public string $categories;

被逗号或空格分隔的类别列表。默认为空,意味着所有类别。

enabled 属性
public boolean $enabled;

是否启用这个日志路由。默认为true。

filter 属性
public mixed $filter;

附加过滤器 (例如 CLogFilter) 它被应用到日志信息。 这个属性的值被传递到 Yii::createComponent 创建一个日志过滤器对象。 结果,这可能是一个表示过滤器类名的字符串或一个表示过滤器配置的数组。

总之,日志过滤器类应该是 CLogFilter 或它的一个子类。 默认为null,意味着没有过滤器被使用。

levels 属性
public string $levels;

用逗号或空格分隔的等级列表。默认是空,意味着所有等级。

logs 属性 (可用自 v1.1.0)
public array $logs;

到目前为止这个日志路由搜集的日志。

方法详细

collectLogs() 方法
public void collectLogs(CLogger $logger, boolean $processLogs=false)
$logger CLogger 日志记录器实例
$processLogs boolean 日志记录器搜集的日志后是否进行处理
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();
    }
}

从日志记录器取回已过滤的日志信息以便进一步处理。

formatLogMessage() 方法
protected string formatLogMessage(string $message, integer $level, string $category, integer $time)
$message string 信息内容
$level integer 信息等级
$category string 信息类别
$time integer 时间戳
{return} string 已格式化的信息
protected function formatLogMessage($message,$level,$category,$time)
{
    return @
date('Y/m/d H:i:s',$time)." [$level] [$category$message\n";
}

格式化一条日志信息已给定不同字段。

init() 方法
public void init()
public function init()
{
}

初始化路由。 方法在路由管理器创建此路由后发起这个方法。

processLogs() 方法
abstract protected void processLogs(array $logs)
$logs array 信息列表。每一个数组元素表示一个信息, 有下面的结构: array( [0] => message (string) [1] => level (string) [2] => category (string) [3] => timestamp (float, 从 microtime(true)获取);
abstract protected function processLogs($logs);

处理日志信息并发送它们到指定的目标。 派生子类必须实现这个方法。

上一篇:
下一篇: