adamcrampton/laravel-database-logger

通过Eloquent模型将Laravel日志写入数据库表

v1.2.5 2020-04-20 00:24 UTC

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:publishdatabase_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 日志类型(logstorechangedelete
  • result 日志结果(successneutralfailure
  • level 日志消息级别(emergencyalertcriticalerrorwarningnoticeinfodebug

此外,您还可以传递一个categorysub_category值,这些值将在生成日志条目时保存到相应的列中。例如:

Log::info('test', ['category' => 'This is a category', 'sub_category' => 'This is a subcategory']);