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']);