kaoken / laravel-mysql-email-log

将 Laravel 处理的日志保存到 Mysql 中,并在达到指定级别时发送邮件。

1.8.5 2019-06-08 07:22 UTC

This package is auto-updated.

Last update: 2024-09-08 19:00:02 UTC


README

将 Laravel 处理的日志保存到 Mysql 中,并在达到指定级别时发送邮件。

Travis composer version licence laravel version

目录

安装

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

  • drivermonolog
  • handlerKaoken\LaravelMysqlEmailLog\LaravelMysqlEmailLogHandler::class
  • model 是日志模型。
  • email 如果为 true,则根据 email_send_level 发送邮件。如果是 false,则不发送任何内容。
  • email_send_level 指定日志级别,并从指定的日志级别或更高级别发送。由于优先级较低,所以 DEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY。大小写不区分。
  • 应根据需要修改从 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

在写入日志之前调用。

许可

MIT