Package | system.logging |
---|---|
Inheritance | class CEmailLogRoute » CLogRoute » CComponent |
Since | 1.0 |
Source Code | framework/logging/CEmailLogRoute.php |
Property | Type | Description | Defined By |
---|---|---|---|
categories | mixed | array of categories, or string list separated by comma or space. | CLogRoute |
emails | array | list of destination email addresses | CEmailLogRoute |
enabled | boolean | whether to enable this log route. | CLogRoute |
except | mixed | array of categories, or string list separated by comma or space, to EXCLUDE from logs. | CLogRoute |
filter | mixed | the additional filter (eg CLogFilter) that can be applied to the log messages. | CLogRoute |
headers | array | additional headers to use when sending an email. | CEmailLogRoute |
levels | string | list of levels separated by comma or space. | CLogRoute |
logs | array | the logs that are collected so far by this log route. | CLogRoute |
sentFrom | string | send from address of the email | CEmailLogRoute |
subject | string | email subject. | CEmailLogRoute |
utf8 | boolean | set this property to true value in case log data you're going to send through emails contains non-latin or UTF-8 characters. | CEmailLogRoute |
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 |
collectLogs() | Retrieves filtered log messages from logger for further processing. | CLogRoute |
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 |
getEmails() | Returns list of destination email addresses | CEmailLogRoute |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getHeaders() | Returns additional headers to use when sending an email. | CEmailLogRoute |
getSentFrom() | Returns send from address of the email | CEmailLogRoute |
getSubject() | Returns email subject. Defaults to CEmailLogRoute::DEFAULT_SUBJECT | CEmailLogRoute |
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 |
init() | Initializes the route. | CLogRoute |
raiseEvent() | Raises an event. | CComponent |
setEmails() | Sets list of destination email addresses. If the value is a string, it is assumed to be comma-separated email addresses. | CEmailLogRoute |
setHeaders() | Sets list of additional headers to use when sending an email. If the value is a string, it is assumed to be line break separated headers. | CEmailLogRoute |
setSentFrom() | Sets send from address of the email | CEmailLogRoute |
setSubject() | Sets email subject. | CEmailLogRoute |
Method | Description | Defined By |
---|---|---|
formatLogMessage() | Formats a log message given different fields. | CLogRoute |
processLogs() | Sends log messages to specified email addresses. | CEmailLogRoute |
sendEmail() | Sends an email. | CEmailLogRoute |
list of destination email addresses
additional headers to use when sending an email.
send from address of the email
email subject. Defaults to CEmailLogRoute::DEFAULT_SUBJECT
set this property to true value in case log data you're going to send through emails contains non-latin or UTF-8 characters. Emails would be UTF-8 encoded.
public array getEmails()
| ||
{return} | array | list of destination email addresses |
public function getEmails()
{
return $this->_email;
}
public array getHeaders()
| ||
{return} | array | additional headers to use when sending an email. |
public function getHeaders()
{
return $this->_headers;
}
public string getSentFrom()
| ||
{return} | string | send from address of the email |
public function getSentFrom()
{
return $this->_from;
}
public string getSubject()
| ||
{return} | string | email subject. Defaults to CEmailLogRoute::DEFAULT_SUBJECT |
public function getSubject()
{
return $this->_subject;
}
protected void processLogs(array $logs)
| ||
$logs | array | list of log messages |
protected function processLogs($logs)
{
$message='';
foreach($logs as $log)
$message.=$this->formatLogMessage($log[0],$log[1],$log[2],$log[3]);
$message=wordwrap($message,70);
$subject=$this->getSubject();
if($subject===null)
$subject=Yii::t('yii','Application Log');
foreach($this->getEmails() as $email)
$this->sendEmail($email,$subject,$message);
}
Sends log messages to specified email addresses.
protected void sendEmail(string $email, string $subject, string $message)
| ||
string | single email address | |
$subject | string | email subject |
$message | string | email content |
protected function sendEmail($email,$subject,$message)
{
$headers=$this->getHeaders();
if($this->utf8)
{
$headers[]="MIME-Version: 1.0";
$headers[]="Content-Type: text/plain; charset=UTF-8";
$subject='=?UTF-8?B?'.base64_encode($subject).'?=';
}
if(($from=$this->getSentFrom())!==null)
{
$matches=array();
preg_match_all('/([^<]*)<([^>]*)>/iu',$from,$matches);
if(isset($matches[1][0],$matches[2][0]))
{
$name=$this->utf8 ? '=?UTF-8?B?'.base64_encode(trim($matches[1][0])).'?=' : trim($matches[1][0]);
$from=trim($matches[2][0]);
$headers[]="From: {$name} <{$from}>";
}
else
$headers[]="From: {$from}";
$headers[]="Reply-To: {$from}";
}
mail($email,$subject,$message,implode("\r\n",$headers));
}
Sends an email.
public void setEmails(mixed $value)
| ||
$value | mixed | list of destination email addresses. If the value is a string, it is assumed to be comma-separated email addresses. |
public function setEmails($value)
{
if(is_array($value))
$this->_email=$value;
else
$this->_email=preg_split('/[\s,]+/',$value,-1,PREG_SPLIT_NO_EMPTY);
}
public void setHeaders(mixed $value)
| ||
$value | mixed | list of additional headers to use when sending an email. If the value is a string, it is assumed to be line break separated headers. |
public function setHeaders($value)
{
if (is_array($value))
$this->_headers=$value;
else
$this->_headers=preg_split('/\r\n|\n/',$value,-1,PREG_SPLIT_NO_EMPTY);
}
public void setSentFrom(string $value)
| ||
$value | string | send from address of the email |
public function setSentFrom($value)
{
$this->_from=$value;
}
public void setSubject(string $value)
| ||
$value | string | email subject. |
public function setSubject($value)
{
$this->_subject=$value;
}
headers
Pay attention that headers array should be as follows
array( 'someheader: somevalue', 'someheader2: somevalue' )
but NOT like this
array( 'someheader'=>'somevalue', 'someheader2'=>'somevalue' )
To enable html tags in the mailed log message, add the content-type text/html header. This enables you to add a direct clickable link to a product page for example.
'headers' => array('Content-Type: text/html; charset="utf8"'),
Signup or Login in order to comment.