CLogFilter
优质
小牛编辑
133浏览
2023-12-01
所有包 | 属性 | 方法
CLogFilter在被一个日志路由处理之前预处理已记录的日志信息。
CLogFilter的用法是,一个日志路由预处理已记录的信息在它们被路由处理前。 CLogFilter的默认做法是 预处理附加的上下文信息到记录的消息。 特别地通过设置 logVars 预定义的PHP变量诸如 $_SERVER, $_POST等等。能被保存为一条日志信息,它可以帮助识别/调试 遇到的问题。
源码: framework/logging/CLogFilter.php#56 (显示)
源码: framework/logging/CLogFilter.php#74 (显示)
源码: framework/logging/CLogFilter.php#93 (显示)
包 | system.logging |
---|---|
继承 | class CLogFilter » CComponent |
版本 | $Id: CLogFilter.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 | framework/logging/CLogFilter.php |
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 |
publicfunctionfilter(&$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 | 日志信息 |
protectedfunctionformat(&$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($logsas&$log)
$log[0]=$prefix.''.$log[0];
}
}
格式化日志信息。 默认是实现是用session ID给每一条信息加前缀。 如果 prefixSession 设置为true。前缀也可以是 当前用户的名称和ID。 如果 prefixUser 设置为true。
getContext() 方法protected string getContext() | ||
{return} | string | 上下文信息。如果是一个空字符串,意味着没有上下文信息。 |
protectedfunctiongetContext()
{
$context=array();
if($this->logUser&&($user=Yii::app()->getComponent('user',false))!==null)
$context[]='User:'.$user->getName().'(ID:'.$user->getId().')';
foreach($this->logVarsas$name)
{
if(!empty($GLOBALS[$name]))
$context[]="${$name}=".var_export($GLOBALS[$name],true);
}
returnimplode("nn",$context);
}
生成要被记录进日志的上下文信息。 默认的实现将dump用户信息,系统变量,等等。