adamcrampton / laravel-database-logger
通过Eloquent模型将Laravel日志写入数据库表
v1.2.5
2020-04-20 00:24 UTC
Requires
- laravel/framework: >=5.8
This package is auto-updated.
Last update: 2024-09-20 14:24:21 UTC
README
通过自定义Monolog通道和Eloquent模型将Laravel日志写入数据库表。
安装
- 在项目目录中运行
composer require adamcrampton/laravel-database-logger - 将库服务提供者
AdamCrampton\LaravelDatabaseLogger\LogServiceProvider::class添加到config\app.php - 运行
php artisan migrate来设置logs表 - 在
config\logging.php中为自定义日志添加一个新的通道
'database' => [
'driver' => 'custom',
'via' => \AdamCrampton\LaravelDatabaseLogger\Services\LogMonoLog::class
]
]
- 更新
config\logging.php中的日志堆栈数组以包括新的通道
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'database'],
],
'database' => [
'driver' => 'custom',
'via' => \AdamCrampton\LaravelDatabaseLogger\Services\LogMonoLog::class
],
配置
该包捆绑了一个定时任务,该任务将删除logs表中超过过期设置的旧记录。要使用此功能
- 运行
php artisan vendor:publish将database_logger.php配置文件发布到您的项目 - 运行
php artisan config:cache以确保项目配置是最新的 - 在项目的
config/database_logger.php文件中设置过期长度(以天为单位) - 在
app/Console/Commands/Kernel.php文件中添加一个条目以安排cron作业,例如:$schedule->command('logs:prune')->dailyAt('07:45');
手动运行命令:php artisan logs:prune
用法
该包基本上是一个针对Monolog的自定义通道,因此您可以使用现有的门面和方法。
以下列在添加日志时自动填充
description日志消息origin请求头中的来源值type日志类型(log、store、change或delete)result日志结果(success、neutral或failure)level日志消息级别(emergency、alert、critical、error、warning、notice、info或debug)
此外,您还可以传递一个category和sub_category值,这些值将在生成日志条目时保存到相应的列中。例如:
Log::info('test', ['category' => 'This is a category', 'sub_category' => 'This is a subcategory']);