通过数据库记录、Telegram 和文件进行日志记录。基于 Laravel 日志记录器。

1.5 2023-06-28 18:48 UTC

This package is auto-updated.

Last update: 2024-09-28 22:01:09 UTC


README

需求

  • PHP v8.1+

描述

通过数据库记录、Telegram 和文件进行日志记录。基于标准 Laravel 日志记录器。它还使用了 Monolog 库。Alpha-Dev-Logger 还附带一个简单的管理面板,用于读取、更改状态和删除日志记录。

安装

第一步是通过 Composer 命令安装 Alpha-Dev-Logger。

composer require alpha-dev-team/logger

下一步重要的步骤是发布配置文件 logger-alpha.php。

php artisan vendor:publish --tag=logger-config --force

还需要运行迁移以创建新的日志表。

php artisan migrate

配置

常规

由于 Alpha-Dev-Logger 基于 Laravel 标准日志记录器,需要在 logging.php 中的 channels 数组中进行一些配置。为了方便,所有必要的更改都包含在 logger-alpha.php 中的 channels 数组中。

数据库

在 logging.php 中的 channels 设置(您可以在 logger-alpha.php 中的 channels 数组中找到它)。

'db' => [
    'driver' => 'custom',
    'via' => \AlphaDevTeam\Logger\Logging\AlphaDevDBLogger::class,
    'level' => env('LOG_LEVEL', 'debug'),
],

Telegram

如果您想将日志错误发送到 Telegram 频道,请在 logging.php 中的 channels 设置(您可以在 logger-alpha.php 中的 channels 数组中找到它)。

'telegram' => [
    'driver' => 'custom',
    'via' => \AlphaDevTeam\Logger\Logging\AlphaDevTelegramLogger::class,
    'level' => env('LOG_LEVEL', 'debug'),
],

为了使用 Telegram 通知,您需要在 .env 文件中确定和设置 Telegram API Bot 和 Telegram 频道名称。

LOG_TELEGRAM_BOT_API=999999999:AAAAAAAsAAA9AaAAAaaaAaAaAaAAA99aAaa
LOG_TELEGRAM_CHANNEL=telegram_channel

此外,您还可以在 logger-alpha.php 中对 Telegram 消息视图进行一些更改。

每日文件

如果您想将日志错误保存到 JSON 格式的文件中,请在 logging.php 中的 channels 设置(您可以在 logger-alpha.php 中的 channels 数组中找到它)。

'daily' => [
    'driver' => 'daily',
    'path' => storage_path('logs/daily/laravel.log'),
    'tap' => [\AlphaDevTeam\Logger\Logging\AlphaDevLogJson::class],
    'level' => env('LOG_LEVEL', 'debug'),
    'days' => 14,
],

daily 数组中的 days 参数设置了文件保留期。您可以设置其他值。

常规

最后,请确保在 .env 文件中将当前日志通道设置为 stack。

LOG_CHANNEL=stack

最后一步。将您要使用的通道添加到 logging.php 中的 channels.stack.channels 数组。

'stack' => [
    'driver' => 'stack',
    'channels' => ['daily', 'db', 'telegram'],
    'ignore_exceptions' => false,
],

面板

Alpha-Dev-Logger 附带一个简单的管理面板,用于读取、更改状态和删除日志记录。您可以在 logger-alpha.php 中对面板路由进行一些更改。

新鲜日志

要刷新日志数据库,请使用特殊命令 RefreshLogsTable。您可以在 logger-alpha.php 中的 db.remove_in_months 设置边缘日期时间以软删除记录和完全删除记录的边缘日期时间。

此外,您还可以将此命令添加到 App\Console\Kernel 中的 Task Scheduling 的 schedule 方法中。例如,每月一次。

$schedule->command('refresh-logs:run')->monthly();