CLogFilter
Package | system.logging |
---|---|
Inheritance | class CLogFilter » CComponent |
Implements | ILogFilter |
Source Code | 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.
Public Properties
Property | Type | Description | Defined 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
Property | Type | Description | Defined By |
---|---|---|---|
context | string | Generates the context information to be logged. | CLogFilter |
Public Methods
Method | Description | Defined 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
Method | Description | Defined 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 |
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 |
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. |
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.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CLogFilter