包 | 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 获取更多关于不同日志路由的信息。
在应用程序配置中日志路由可能像下面这样配置:
你能指定多个带有不同过滤条件和不同目标的路由, 即使路由是相同类型的。
例如,一个文件日志路由 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 |
公共方法
属性详细
routes
属性
当前已初始化的路由
方法详细
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 | 路由配置列表。
每个数组元素表示一个路由配置并且有下面的数组结构:
|
public function setRoutes($config)
{
foreach($config as $name=>$route)
$this->_routes[$name]=$route;
}