Yii2 如何开启数据库日志,如何遇到错误时能够自动发送邮件 --(DB-MySQL)Log
2018-05-22| 程成| 1544| 1| Yii

调试 PHP 代码时,我们最常用的就是手动输出然后 exit,这种方法简单快捷。但是也有局限性,比如在写 API 或者跑脚本的时候。这个时候,我们就需要查看错误 Log,在一堆 Log 中找到对应的位置。这个时候,我们就需要开启数据库日志(可以生成错误日志,发送错误日志邮件,错误信息存入数据库,三者可以同时进行)。


对于 Log,有文件的 Log,数据库的 Log,每次使用需要打开 Log,这个比较麻烦,对于持续的输出,我们需要使用 Linux 命令 tail -f  xxx.log 来查看持续的 Log。


使用 DB Log,把 Log 存储到表中,我们可以在后台开启一个 Log 查看过滤的功能,每次执行,直接在后台查看,方便快捷,下面讲述如果在 Yii2 中开启 DB Log。



1、加入 Log 组件的配置,添加在 components 下面


'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                    'categories' => ['yii\*'],
                ],
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning','info'],
                    'logFile' =>'@runtime/logs/chengcheng.log',
                    'exportInterval' => 1,
                    'categories'=>['chengcheng'],
                    'logVars' => [],
                ],
                [
                    'class' => 'yii\log\DbTarget',
                    'levels' => ['error', 'warning'],
                    'logTable' => 'system_log',
                ],
                [
                    'class' => 'yii\log\EmailTarget',
                    'levels' => ['error', 'warning'],
                    'message' => [
                        'to' => ['chengcheng@yidian-mall.com'],
                        'subject' => 'Yidian Mall',
                    ],
                ],
            ],
        ],



2、在 cmd 中运行下面一句话


 php yii migrate --migrationPath=@yii/log/migrations


注意安装目录,Yii 高级版在根目录下运行。



3、测试报错


image.png


这里的 'chengcheng' 和配置文件中 'categories' 下的名称要一致的。



(1)日志文件位置:“/项目名/runtime/logs”


image.png



(2)数据库日志


image.png



(3)错误邮件


image.png



注:如果邮件报错,你需要添加邮箱配置:


'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.exmail.qq.com',  //每种邮箱的host配置不一样
                'username' => 'xxxxx',
                'password' => 'xxxxx',
                'port' => 'xxx',
                // 'encryption' => 'tls',
            ],
            'messageConfig'=>[
                'charset'=>'UTF-8',
                'from'=>['admin@yidian-mall.com'=>'Yidian Mall']
            ],
        ],


上面的邮箱 username,password,port 自行配置。



通过以上方法,当你遇到了错误信息,便会记录日志文件,发送错误邮箱 和 存入数据库了。




×
作者:程成
QQ:492245711