kaoken / laravel-db-email-log
将Laravel处理过的日志保存在数据库中,当日志达到指定级别时发送邮件。
Requires
- php: >=7.3.0
- ext-json: *
- laravel/framework: v8.77.1
README
将Laravel处理过的日志保存在Mysql中,当日志达到指定级别时发送邮件。
目录
安装
composer:
composer require kaoken/laravel-db-email-log
或者,添加 composer.json
"require": { ... "kaoken/laravel-db-email-log":"^1.0" }
设置
将以下内容添加到 config\app.php
'providers' => [ ... // Add Kaoken\LaravelDBEmailLog\LaravelDBEmailLogServiceProvider::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) 'db_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']
复制,并将驱动名称设置为 db_log
。这是必要的,以防止在事务处理(DB :: transaction
, DB :: beginTransaction
等)中使用驱动名称 mysql
时,由于回滚而丢失日志。
将以下内容添加到 config\logging.php
connection
是数据驱动的驱动名称。参见config\database.php
。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
是邮件的接收者。
最好将其添加到 config\app.php
文件中的 'log_level' => env('APP_LOG_LEVEL', 'debug'),
之下。
'default' => env('LOG_CHANNEL', 'db_log'), // Add 'db_log' => [ 'connection' => 'db_log', 'model' => Kaoken\LaravelDBEmailLog\Model\Log::class, 'email' => true, 'email_send_level' => 'ERROR', 'email_log' => Kaoken\LaravelDBEmailLog\Mail\LogMailToAdmin::class, 'email_send_limit' => Kaoken\LaravelDBEmailLog\Mail\SendLimitMailToAdmin::class, 'max_email_send_count' => 64, 'to' => 'hoge@hoge.com' ],
命令
php artisan vendor:publish --tag=db-email-log
执行后,以下目录和文件将被添加。
database
migrations
2021_01_01_000001_create_logs_table.php
resources
views
vendor
mysql_email_log
log.blade.php
over_limit.blade.php
迁移
根据需要修改迁移文件 2021_01_01_000001_create_logs_table.php
。
php artisan migrate
电子邮件
在上面的设置中,config\logging.php
配置使用 Kaoken\LaravelDBEmailLog\Mail\ConfirmationMailToUser::class
作为目标级别或更高的日志邮件。模板使用 views\vendor\mysql_email_log\log.blade.php
。根据应用程序的规范进行更改。
当目标级别以上的日志达到发送限制时,使用 Kaoken\LaravelDBEmailLog\Mail\ConfirmationMailToUser::class
。模板使用 views\vendor\mysql_email_log\over_limit.blade.php
。根据应用程序的规范进行更改。
事件
请参阅 vendor\laravel-db-email-log\src\Events
目录内的内容!
BeforeWriteLogEvent
在写入日志之前调用。