solvrtech/laravel-logbook

此包提供了与LogBook的集成。

v1.0.2 2023-09-22 13:52 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:31:00 UTC


README

Laravel-logbook 包扩展了Laravel的日志功能,通过向目标LogBook安装发送日志消息来添加额外的功能。您可以通过在Laravel应用程序根目录中运行以下命令来安装此包

composer require solvrtech/laravel-logbook

然后按照以下方式发布 config/logging.php 配置文件

php artisan vendor:publish --tag=logbook

config/logging.php 文件中编辑通道堆栈以使用“logbook”

// ...
'channels' => [
    // ...
    
    'logbook' => [
        'driver' => 'logbook',
        'level' => env('LOG_LEVEL', 'debug')
    ],
]

laravel-logbook 还需要在应用程序的 .env 文件中进行适当的配置。
例如

LOG_CHANNEL=logbook
LOG_LEVEL=debug
LOGBOOK_API_URL="https://logbook.com"
LOGBOOK_API_KEY="4eaa39a6ff57c4..."

# Instance ID is a unique identifier per instance of your apps
LOGBOOK_INSTANCE_ID="default"
  • LOGBOOK_INSTANCE_ID
    为应用程序的部署定义一个唯一的标识符。当您有多个应用程序实例或部署(例如,在水平扩展环境中)时,这很有用。例如,您可以设置“app-1”作为第一个实例,“app-2”作为第二个实例。实例ID信息将作为日志详细信息的一部分显示在LogBook中。
  • LOGBOOK_API_URL
    您的LogBook安装的实际URL
  • LOGBOOK_API_KEY
    LogBook为应用程序生成的API密钥
  • LOG_CHANNEL
    必须在 config/logging.php 文件中定义 logbook
  • LOG_LEVEL
    指定将提交到您的LogBook安装的最小日志级别。日志级别的顺序为(从低到高)
  1. DEBUG
  2. INFO
  3. NOTICE
  4. WARNING
  5. ERROR
  6. CRITICAL
  7. ALERT
  8. EMERGENCY

例如,如果您设置 LOG_LEVEL=WARNING,则只有优先级更高的日志级别(例如 WARNING、ERROR、CRITICAL、ALERT 和 EMERGENCY)将提交到您的 LogBook 安装。

将日志提交到LogBook

要提交任何日志消息,只需在控制器或服务类中使用 Laravel Log 门面即可

use Illuminate\Support\Facades\Log;

class UserController extends Controller {

public function show($message) {
      Log::emergency($message);
      Log::alert($message);
      Log::critical($message);
      Log::error($message);
      Log::warning($message);
      Log::notice($message);
      Log::info($message);
      Log::debug($message);
      // ...
   }
}

有关Laravel日志的更多信息,请参阅他们的文档页面。

异步提交日志

默认情况下,您的应用程序中的日志将同步提交,一旦记录就会导致应用程序的性能问题。幸运的是,您可以通过将日志排队(在数据库或Redis中)然后创建一个后台任务以批量提交日志队列来异步提交日志。

1. 队列存储

在您的应用程序的 .env 文件中设置以下配置

# "database" or "redis"
LOGBOOK_TRANSPORT="database"
LOGBOOK_BATCH=15
  • LOGBOOK_TRANSPORT: 指定排队机制的存储类型。支持的值是“database”或“redis”。
  • LOGBOOK_BATCH: 从您的应用程序批量发送到 LogBook 的最大日志数。

配置提交日志的排队存储后,您需要创建一个定期运行的背景任务,该任务将运行:php artisan logbook:log:consume。您可以使用 Systemd 或 Supervisor 来设置此任务。

2.a 使用 Systemd

创建一个新的服务文件,例如 /etc/systemd/system/log-consume.service,然后在文件中添加以下配置

[Unit]
Description=Log Consume
After=network.target

[Service]
ExecStart=/usr/bin/php artisan logbook:log:consume
WorkingDirectory=/path/to/your/laravel
User=www-data
Restart=always

[Install]
WantedBy=multi-user.target

启动服务并在系统重启时启用它

sudo systemctl start log-consume && sudo systemctl enable log-consume

2.b 使用 Supervisor

为日志消费服务创建一个新的配置文件,例如 /etc/supervisor/conf.d/log-consume.conf。在文件中添加以下配置

[program:log-consume]
command=php /path/to/your/laravel/artisan logbook:log:consume
directory=/path/to/your/laravel
autostart=true
autorestart=true
stderr_logfile=/var/log/log-consume.err.log
stdout_logfile=/var/log/log-consume.out.log
user=www-data

要启动服务,请运行以下命令

sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start log-consume

可选:设置您的应用程序版本

应用程序版本是一个可选参数,也可以包含在您的LogBook安装中的日志提交数据中。为此,请将“version”配置添加到/config/app.php文件中

return [
    // ...

    'version' => "1.0.0"
];

值得注意的是,虽然建议设置应用程序版本,但这是一个可选步骤。当找不到“version”配置时,日志提交应正常工作,但提交的日志中不会找到版本信息。