kaoken/laravel-db-email-log

将Laravel处理过的日志保存在数据库中,当日志达到指定级别时发送邮件。

1.0.0 2022-01-04 12:27 UTC

This package is auto-updated.

Last update: 2024-09-04 18:00:00 UTC


README

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

Travis composer version licence laravel version

目录

安装

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 指定日志级别,并从指定的日志级别或更高级别发送。由于优先级较低,因此 DEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY。大小写字母不区分。
  • 应按需修改从 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

在写入日志之前调用。

许可

MIT