我正在尝试在Yii2中记录邮件,然后将其通过电子邮件发送到我指定的电子邮件地址。
配置文件web.php
包含:
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
我正在记录如下消息:
Yii::info('Log message example','mail');
成功执行后,我会收到这样的邮件:
2018-07-31 09:01:12 [127.0.0.1][user@example.com][-][info][mail] Log message example
所以我想做的是从此消息中删除不需要的信息,例如IP地址,用户名等,最后我想要的是
2018-07-31 09:01:12 Log message example
答案 0 :(得分:1)
您可以通过设置prefix
属性从日志中删除前三部分:
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'prefix' => function () {
return '';
},
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
最后两个部分(级别和类别)是硬编码的,您需要扩展EmailTarget
并覆盖formatMessage()
才能将其删除。
答案 1 :(得分:1)
您可以在配置文件web.php
或代码中进行设置。
Yii::$app->log->targets['test']->prefix = function (){
return null;
};
或
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'prefix' => function () {
return null;
},
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],