solvrtech / laravel-logbook
此包提供了与LogBook的集成。
Requires
- php: >=8.0
- illuminate/console: ~8.0|~9.0|~10.0
- illuminate/contracts: ~8.0|~9.0|~10.0
- illuminate/database: ~8.0|~9.0|~10.0
- illuminate/http: ~8.0|~9.0|~10.0
- illuminate/log: ~8.0|~9.0|~10.0
- illuminate/redis: ~8.0|~9.0|~10.0
- illuminate/support: ~8.0|~9.0|~10.0
- ketut/random-string: ^1.0
- symfony/http-client: ~5.0|~6.0
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安装的最小日志级别。日志级别的顺序为(从低到高)
- DEBUG
- INFO
- NOTICE
- WARNING
- ERROR
- CRITICAL
- ALERT
- 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”配置时,日志提交应正常工作,但提交的日志中不会找到版本信息。