0 follower

CLogFilter

Package system.logging
Inheritance class CLogFilter » CComponent
Implements ILogFilter
Source Code 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.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
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

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
context string Generates the context information to be logged. CLogFilter

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__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

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
format() Formats the log messages. CLogFilter
getContext() Generates the context information to be logged. CLogFilter

Property Details

context property read-only
protected string getContext()

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

dumper property (available since 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 property
public boolean $logUser;

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

logVars property
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 property
public boolean $prefixSession;

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

prefixUser property
public boolean $prefixUser;

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

Method Details

filter() method
public array filter(array &$logs)
$logs array the log messages
{return} array
Source Code: framework/logging/CLogFilter.php#62 (show)
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() method
protected void format(array &$logs)
$logs array the log messages
Source Code: framework/logging/CLogFilter.php#80 (show)
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() method
protected string getContext()
{return} string the context information. If an empty string, it means no context information.
Source Code: framework/logging/CLogFilter.php#99 (show)
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.