CLogRouter


system.logging
继承 class CLogRouter » CApplicationComponent » CComponent
实现 IApplicationComponent
源自 1.0
版本 $Id: CLogRouter.php 3426 2011-10-25 00:01:09Z alexander.makarow $
源码
CLogRouter管理用不同媒体记录日志信息的日志路由。

例如,一个文件日志路由 CFileLogRoute 记录日志信息。 在日志文件中一个邮件日志路由 CEmailLogRoute 发送日志信息到指定的邮件地址 参见CLogRoute 获取更多关于不同日志路由的信息。



在应用程序配置中日志路由可能像下面这样配置:
array(
    'preload'=>array('log'), // 预载入日志组件在应用程序开始时
    'components'=>array(
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'trace, info',
                    'categories'=>'system.*',
                ),
                array(
                    'class'=>'CEmailLogRoute',
                    'levels'=>'error, warning',
                    'emails'=>array('admin@example.com'),
                ),
            ),
        ),
    ),
)


你能指定多个带有不同过滤条件和不同目标的路由, 即使路由是相同类型的。

公共属性

属性 类型 描述 定义在
behaviors array 这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。 CApplicationComponent
isInitialized boolean 检查应用组件是否已经初始化。 CApplicationComponent
routes array 当前已初始化的路由 CLogRouter

公共方法

方法 描述 定义在
__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() 从一个日志记录器搜集日志信息。 CLogRouter
detachBehavior() 从组件中分离一个行为。 CComponent
detachBehaviors() 从组件中分离所有行为。 CComponent
detachEventHandler() 分离一个存在的事件处理程序。 CComponent
disableBehavior() 禁用一个附加行为。 CComponent
disableBehaviors() 禁用组件附加的所有行为。 CComponent
enableBehavior() 启用一个附加行为。 CComponent
enableBehaviors() 启用组件附加的所有行为。 CComponent
evaluateExpression() 计算一个PHP表达式,或根据组件上下文执行回调。 CComponent
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
getIsInitialized() 检查应用组件是否已经初始化。 CApplicationComponent
getRoutes() 返回当前已初始化的路由 CLogRouter
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
init() 初始化应用程序组件。 CLogRouter
processLogs() 在 logger 中收集和处理日志信息。 CLogRouter
raiseEvent() 发起一个事件。 CComponent
setRoutes() 设置路由配置列表。 每个数组元素表示一个路由配置并且有下面的数组结构:
  • class: 指定类名或路由类的别名。
  • name-value 键值对,配置路由的初始属性值。
CLogRouter

属性详细

routes 属性
public array getRoutes()
public void setRoutes(array $config)

当前已初始化的路由

方法详细

collectLogs() 方法
public void collectLogs(CEvent $event)
$event CEvent 事件参数
public function collectLogs($event)
{
    
$logger=Yii::getLogger();
    
$dumpLogs=isset($event->params['dumpLogs']) && $event->params['dumpLogs'];
    foreach(
$this->_routes as $route)
    {
        if(
$route->enabled)
            
$route->collectLogs($logger,$dumpLogs);
    }
}

从一个日志记录器搜集日志信息。 这个方法是 CLogger::onFlush 事件的事件处理程序。

getRoutes() 方法
public array getRoutes()
{return} array 当前已初始化的路由
public function getRoutes()
{
    return new 
CMap($this->_routes);
}

init() 方法
public void init()
public function init()
{
    
parent::init();
    foreach(
$this->_routes as $name=>$route)
    {
        
$route=Yii::createComponent($route);
        
$route->init();
        
$this->_routes[$name]=$route;
    }
    
Yii::getLogger()->attachEventHandler('onFlush',array($this,'collectLogs'));
    
Yii::app()->attachEventHandler('onEndRequest',array($this,'processLogs'));
}

初始化应用程序组件。 这个方法要求通过IApplicationComponent接口。

processLogs() 方法 (可用自 v1.1.0)
public void processLogs(CEvent $event)
$event CEvent 事件参数
public function processLogs($event)
{
    
$logger=Yii::getLogger();
    foreach(
$this->_routes as $route)
    {
        if(
$route->enabled)
            
$route->collectLogs($logger,true);
    }
}

在 logger 中收集和处理日志信息。 这个方法是 CApplication::onEndRequest 事件的一个事件处理程序。

setRoutes() 方法
public void setRoutes(array $config)
$config array 路由配置列表。 每个数组元素表示一个路由配置并且有下面的数组结构:
  • class: 指定类名或路由类的别名。
  • name-value 键值对,配置路由的初始属性值。
public function setRoutes($config)
{
    foreach(
$config as $name=>$route)
        
$this->_routes[$name]=$route;
}