CLogRouter

优质
小牛编辑
125浏览
2023-12-01
所有包 | 属性 | 方法
system.logging
继承class CLogRouter » CApplicationComponent » CComponent
实现IApplicationComponent
源自1.0
版本$Id: CLogRouter.php 3426 2011-10-25 00:01:09Z alexander.makarow $
源码framework/logging/CLogRouter.php
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'),              ),          ),      ),  ),
)


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

公共属性

隐藏继承属性

属性类型描述定义在
behaviorsarray这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。CApplicationComponent
isInitializedboolean检查应用组件是否已经初始化。CApplicationComponent
routesarray当前已初始化的路由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)
$eventCEvent事件参数
源码: framework/logging/CLogRouter.php#101 (显示) publicfunctioncollectLogs($event)
{
$logger=Yii::getLogger();
$dumpLogs=isset($event->params['dumpLogs'])&&$event->params['dumpLogs'];
foreach($this->_routesas$route)
{
if($route->enabled)
$route->collectLogs($logger,$dumpLogs);
}
}

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

getRoutes() 方法
public array getRoutes()
{return}array当前已初始化的路由
源码: framework/logging/CLogRouter.php#77 (显示) publicfunctiongetRoutes()
{
returnnewCMap($this->_routes);
}
init() 方法
public void init()
源码: framework/logging/CLogRouter.php#61 (显示) publicfunctioninit()
{
parent::init();
foreach($this->_routesas$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)
$eventCEvent事件参数
源码: framework/logging/CLogRouter.php#118 (显示) publicfunctionprocessLogs($event)
{
$logger=Yii::getLogger();
foreach($this->_routesas$route)
{
if($route->enabled)
$route->collectLogs($logger,true);
}
}

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

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