包 | 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')。
等级过滤器和类别过滤器是可以组合的 例如,只有同时满足过滤条件的消息,才返回。
一个日志路由对象从一个日志记录器取回日志信息 并发送它到任何地方。例如文件,电子邮件。 取回的信息在发送给目录前可以被过滤。 过滤器包括日志等级过滤器和日志类别过滤器。
要指定等级过滤器, 指定 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);
处理日志信息并发送它们到指定的目标。 派生子类必须实现这个方法。