包 | 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 |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
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用户信息,系统变量,等等。