system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

CLogFilter

system.logging
继承 class CLogFilter » CComponent
实现 ILogFilter
源码 framework/logging/CLogFilter.php
CLogFilter preprocesses the logged messages before they are handled by a log route.

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

受保护的属性

隐藏继承的属性

属性类型描述被定义在
context string Generates the context information to be logged. 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

属性详情

context 属性 只读
protected string getContext()

Generates the context information to be logged. The default implementation will dump user information, system variables, etc.

dumper 属性 (自版本 v1.1.14 可用)
public callable $dumper;

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.

logUser 属性
public boolean $logUser;

whether to log the current user name and ID. Defaults to true.

logVars 属性
public array $logVars;

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.

prefixSession 属性
public boolean $prefixSession;

whether to prefix each log message with the current user session ID. Defaults to false.

prefixUser 属性
public boolean $prefixUser;

whether to prefix each log message with the current user name and ID. Defaults to false.

方法详情

filter() 方法
public array filter(array &$logs)
$logs array the log messages
{return} array
源码: framework/logging/CLogFilter.php#62 (显示)
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.

format() 方法
protected void format(array &$logs)
$logs array the log messages
源码: framework/logging/CLogFilter.php#80 (显示)
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.

getContext() 方法
protected string getContext()
{return} string the context information. If an empty string, it means no context information.
源码: framework/logging/CLogFilter.php#99 (显示)
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.