首页 > 解决方案 > Yii2 - 如何从日志文件中删除不必要的信息?

问题描述

我正在尝试在 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

标签: yii2yii2-advanced-appyii2-basic-app

解决方案


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()以删除它们。


推荐阅读