zdz/laravel-middleware-log

laravel middleware for log auto record

2.0.3 2021-01-15 02:23 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:30 UTC


README

laravel日志中间件

Requirements

  • php: ^7.2
  • laravel: ^6.0

Installation

composer require zdz/laravel-middleware-log

Usage

注册中间件(选择合适的)

  • 全局注册

app/Http/Kernel.php 中的 $middleware 属性中列出这个中间件

// 在 App\Http\Kernel 类中...

protected $middleware = [
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    // 日志中间件
    \zdz\LaravelMiddlewareLog\WriteLogMiddleware::class,
];
  • 中间件组 (推荐,只记录api日志)
// 在 App\Http\Kernel 类中...

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            // 日志中间件
            \zdz\LaravelMiddlewareLog\WriteLogMiddleware::class,
        ],
    ];
  • 单独路由
// 在 App\Http\Kernel 类中...
protected $routeMiddleware = [
    'auto_log' => \zdz\LaravelMiddlewareLog\WriteLogMiddleware::class,
];
Route::get('admin/profile', function () {
    //
})->middleware('auto_log');

监听sql语句

// 在 App\Providers\EventServiceProvider 类中...
protected $listen = [
    Registered::class => [
        SendEmailVerificationNotification::class,
    ],
   // 添加sql监听 
    \Illuminate\Database\Events\QueryExecuted::class => [
        \zdz\LaravelMiddlewareLog\SqlLogListen::class
    ]
];

Log结构

默认请求一次,记录一条日志,日志为json字符串,结构如下:

Configuration(可选,自定义配置)

使用以下命令发布配置,发布之后会生成config/log-middleware.php,在此文件里修改配置

php artisan vendor:publish --provider="zdz\LaravelMiddlewareLog\LogServiceProvider"

config/log-middleware.php

其他操作

使用zdz\LaravelMiddlewareLog\tool\FormatLog增加日志的内容

提供的方法

write(string $point, string $op, $context = '', bool $jsonStrToArray = true): void
  • $point:字段
  • $op: 写入方式 FormatLog::LOG_WRITE 覆盖写入, FormatLog::LOG_APPEND 追加写入
  • $context: 内容,字符串或者数组
  • $jsonStrToArray:是否将json转换成数组,默认true,避免json嵌套的问题
writeMany(array $array): void
  • $array 数组,会和日志数据做array_merge操作