CLogFilter
包 | system.logging |
---|---|
继承 | class CLogFilter » CComponent |
实现 | ILogFilter |
源码 | framework/logging/CLogFilter.php |
CLogFilter is meant to be used by a log route to preprocess the logged messages before they are handled by the route. The default implementation of CLogFilter prepends additional context information to the logged messages. In particular, by setting logVars, predefined PHP variables such as $_SERVER, $_POST, etc. can be saved as a log message, which may help identify/debug issues encountered.
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
dumper | callable | or function which will be used to dump context information. | CLogFilter |
logUser | boolean | whether to log the current user name and ID. | CLogFilter |
logVars | array | list of the PHP predefined variables that should be logged. | CLogFilter |
prefixSession | boolean | whether to prefix each log message with the current user session ID. | CLogFilter |
prefixUser | boolean | whether to prefix each log message with the current user name and ID. | CLogFilter |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
filter() | Filters the given log messages. | CLogFilter |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
raiseEvent() | Raises an event. | CComponent |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
format() | Formats the log messages. | CLogFilter |
getContext() | Generates the context information to be logged. | CLogFilter |
属性详情
Generates the context information to be logged. The default implementation will dump user information, system variables, etc.
or function which will be used to dump context information. Defaults to `var_export`. If you're experiencing issues with circular references problem change it to `print_r`. Any kind of callable (static methods, user defined functions, lambdas, etc.) could also be used.
whether to log the current user name and ID. Defaults to true.
list of the PHP predefined variables that should be logged. Note that a variable must be accessible via $GLOBALS. Otherwise it won't be logged.
whether to prefix each log message with the current user session ID. Defaults to false.
whether to prefix each log message with the current user name and ID. Defaults to false.
方法详情
public array filter(array &$logs)
| ||
$logs | array | the log messages |
{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;
}
Filters the given log messages. This is the main method of CLogFilter. It processes the log messages by adding context information, etc.
protected void format(array &$logs)
| ||
$logs | array | the log messages |
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];
}
}
Formats the log messages. The default implementation will prefix each message with session ID if prefixSession is set true. It may also prefix each message with the current user's name and ID if prefixUser is true.
protected string getContext()
| ||
{return} | string | the context information. If an empty string, it means no context information. |
protected function getContext()
{
$context=array();
if($this->logUser && ($user=Yii::app()->getComponent('user',false))!==null)
$context[]='User: '.$user->getName().' (ID: '.$user->getId().')';
if($this->dumper==='var_export' || $this->dumper==='print_r')
{
foreach($this->logVars as $name)
if(($value=$this->getGlobalsValue($name))!==null)
$context[]="\${$name}=".call_user_func($this->dumper,$value,true);
}
else
{
foreach($this->logVars as $name)
if(($value=$this->getGlobalsValue($name))!==null)
$context[]="\${$name}=".call_user_func($this->dumper,$value);
}
return implode("\n\n",$context);
}
Generates the context information to be logged. The default implementation will dump user information, system variables, etc.