| 包 | 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 |
公共方法
| 方法 | 描述 | 定义在 |
|---|---|---|
| __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() | 设置路由配置列表。
每个数组元素表示一个路由配置并且有下面的数组结构:
|
CLogRouter |
属性详细
routes
属性
public array getRoutes()
public void setRoutes(array $config)
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 | 路由配置列表。
每个数组元素表示一个路由配置并且有下面的数组结构:
|
public function setRoutes($config)
{
foreach($config as $name=>$route)
$this->_routes[$name]=$route;
}