包 | system.logging |
---|---|
继承 | class CLogFilter » CComponent |
版本 | $Id: CLogFilter.PHP 3515 2011-12-28 12:29:24Z mDOMba $ |
源码 |
CLogFilter在被一个日志路由处理之前预处理已记录的日志信息。
CLogFilter的用法是,一个日志路由预处理已记录的信息在它们被路由处理前。 CLogFilter的默认做法是 预处理附加的上下文信息到记录的消息。 特别地通过设置 logVars 预定义的PHP变量诸如 $_SERVER, $_POST等等。能被保存为一条日志信息,它可以帮助识别/调试 遇到的问题。
CLogFilter的用法是,一个日志路由预处理已记录的信息在它们被路由处理前。 CLogFilter的默认做法是 预处理附加的上下文信息到记录的消息。 特别地通过设置 logVars 预定义的PHP变量诸如 $_SERVER, $_POST等等。能被保存为一条日志信息,它可以帮助识别/调试 遇到的问题。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
logUser | boolean | 是否记录当前用户名和ID。默认为true。 | CLogFilter |
logVars | array | 要被记录的PHP预定义变量列表。 注意一个变量必须可通过$GLOBALS访问。要不然,它不会被记录。 | CLogFilter |
prefixsession | boolean | 是否用当前用户的session ID为每条日志信息加前缀。 默认是false。 | CLogFilter |
prefixUser | boolean | 是否为每一条日志用当前用户的@link CWebUser::name name} 和 ID。 默认为false。 | CLogFilter |
受保护属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
context | string | 生成要被记录进日志的上下文信息。 | CLogFilter |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
filter() | 过滤给定的日志信息。 | CLogFilter |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
format() | 格式化日志信息。 | CLogFilter |
getContext() | 生成要被记录进日志的上下文信息。 | CLogFilter |
属性详细
context
属性
只读
protected string getContext()
生成要被记录进日志的上下文信息。 默认的实现将dump用户信息,系统变量,等等。
logUser
属性
public boolean $logUser;
是否记录当前用户名和ID。默认为true。
logVars
属性
public array $logVars;
要被记录的PHP预定义变量列表。 注意一个变量必须可通过$GLOBALS访问。要不然,它不会被记录。
prefixSession
属性
public boolean $prefixSession;
是否用当前用户的session ID为每条日志信息加前缀。 默认是false。
prefixUser
属性
public boolean $prefixUser;
是否为每一条日志用当前用户的@link CWebUser::name name} 和 ID。 默认为false。
方法详细
filter()
方法
public array filter(array &$logs)
| ||
$logs | array | 日志信息 |
{return} | array |
public function filter(&$logs)
{
if (!empty($logs))
{
if(($message=$this->getContext())!=='')
array_unshift($logs,array($message,CLogger::LEVEL_INFO,'application',YII_BEGIN_TIME));
$this->format($logs);
}
return $logs;
}
过滤给定的日志信息。 这是CLogFilter的主要方法.。 它通过加入上下文信息来处理的日志消息。
format()
方法
protected void format(array &$logs)
| ||
$logs | array | 日志信息 |
protected function format(&$logs)
{
$prefix='';
if($this->prefixSession && ($id=session_id())!=='')
$prefix.="[$id]";
if($this->prefixUser && ($user=Yii::app()->getComponent('user',false))!==null)
$prefix.='['.$user->getName().']['.$user->getId().']';
if($prefix!=='')
{
foreach($logs as &$log)
$log[0]=$prefix.' '.$log[0];
}
}
格式化日志信息。 默认是实现是用session ID给每一条信息加前缀。 如果 prefixSession 设置为true。前缀也可以是 当前用户的名称和ID。 如果 prefixUser 设置为true。
getContext()
方法
protected string getContext()
| ||
{return} | string | 上下文信息。如果是一个空字符串,意味着没有上下文信息。 |
protected function getContext()
{
$context=array();
if($this->logUser && ($user=Yii::app()->getComponent('user',false))!==null)
$context[]='User: '.$user->getName().' (ID: '.$user->getId().')';
foreach($this->logVars as $name)
{
if(!empty($GLOBALS[$name]))
$context[]="\${$name}=".var_export($GLOBALS[$name],true);
}
return implode("\n\n",$context);
}
生成要被记录进日志的上下文信息。 默认的实现将dump用户信息,系统变量,等等。