kaoken / laravel-mysql-email-log
将 Laravel 处理的日志保存到 Mysql 中,并在达到指定级别时发送邮件。
Requires
- php: >=7.1.3
- laravel/framework: 5.8.*
This package is auto-updated.
Last update: 2024-09-08 19:00:02 UTC
README
将 Laravel 处理的日志保存到 Mysql 中,并在达到指定级别时发送邮件。
目录
安装
composer:
composer require kaoken/laravel-mysql-email-log
或,添加 composer.json
"require": { ... "kaoken/laravel-mysql-email-log":"^1.8.5" }
设置
按照以下方式添加到 config\app.php
'providers' => [ ... // Add Kaoken\LaravelMysqlEmailLog\LaravelMysqlEmailLogServiceProvider::class ],
按照以下方式添加到 config\database.php
'connections' => [ ... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], // Add (Copy 'mysql' above) 'mysql_log' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ...
复制上面的 ['connections']['mysql']
并将驱动程序名称设置为 mysql_log
。这在使用驱动程序名称 mysql
进行事务处理(DB :: transaction
、 DB :: beginTransaction
等)并写入日志时,防止由于回滚而丢失日志是必要的。
按照以下方式添加到 config\logging.php
driver
是monolog
。handler
是Kaoken\LaravelMysqlEmailLog\LaravelMysqlEmailLogHandler::class
。model
是日志模型。email
如果为true
,则根据email_send_level
发送邮件。如果是false
,则不发送任何内容。email_send_level
指定日志级别,并从指定的日志级别或更高级别发送。由于优先级较低,所以DEBUG
、INFO
、NOTICE
、WARNING
、ERROR
、CRITICAL
、ALERT
、EMERGENCY
。大小写不区分。- 应根据需要修改从 Mailable 派生的类
email_log
。发送日志邮件。 - 应根据需要修改从 Mailable 派生的类
email_send_limit
。当电子邮件传输限制max_email_send_count
超过时发送。 max_email_send_count
是一天内可以传输的日志电子邮件数量。当传输次数超过时,会发送一个简单的警告邮件。参见email_send_level
。to
是邮件的目的地。
// Add 'mysql_log' => [ 'driver' => 'monolog', 'handler' => Kaoken\LaravelMysqlEmailLog\LaravelMysqlEmailLogHandler::class, 'model' => Kaoken\LaravelMysqlEmailLog\Model\Log::class, 'email' => true, 'email_send_level' => 'ERROR', 'email_log' => Kaoken\LaravelMysqlEmailLog\Mail\LogMailToAdmin::class, 'email_send_limit' => Kaoken\LaravelMysqlEmailLog\Mail\SendLimitMailToAdmin::class, 'max_email_send_count' => 64, 'to' => 'hoge@hoge.com' ],
修改 .env
以启用日志记录
按照以下方式进行更正
LOG_CHANNEL=mysql_log
命令
php artisan vendor:publish --tag=mysql-email-log
执行后,以下目录和文件被添加。
database
migrations
2017_09_17_000001_create_logs_table.php
resources
views
vendor
mysql_email_log
log.blade.php
over_limit.blade.php
迁移
迁移文件 2017_09_17_000001_create_logs_table.php
应根据需要进行修改。
php artisan migrate
电子邮件
在上面的 config\logging.php
设置中,使用 Kaoken\LaravelMysqlEmailLog\Mail\ConfirmationMailToUser::class
作为目标级别或更高的日志邮件。模板使用 views\vendor\mysql_email_log\log.blade.php
。根据应用规范进行更改。
使用 Kaoken\LaravelMysqlEmailLog\Mail\ConfirmationMailToUser::class
作为 email_send_limit
,当高于目标级别的日志达到发送限制时。模板使用 views\vendor\mysql_email_log\over_limit.blade.php
。根据应用规范进行更改。
事件
查看 vendor\laravel-mysql-email-log\src\Events
目录内的内容!
BeforeWriteLogEvent
在写入日志之前调用。