天天看點

laravel系統日志,請求日志友好化,可持續化

2023年2月9日09:59:09

laravel日志檢視元件

方案一:

composer require rap2hpoutre/laravel-log-viewer

位址:https://packagist.org/packages/rap2hpoutre/laravel-log-viewer

安裝 (Laravel)

通過composer安裝

composer require rap2hpoutre/laravel-log-viewer

config/app.php

providers

部分已添加

Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,

在路由檔案中添加:

Route::get('logs', [\Rap2hpoutre\LaravelLogViewer\LogViewerController::class, 'index']);

通路 http://域名/logs 或者放在其他路由位址上

增加登入驗證:

<?php

namespace App\Http\Controllers\Open;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
use Rap2hpoutre\LaravelLogViewer\LogViewerController;
use Exception;

class LogsController extends BaseController
{
    //登入位址 http://www.db.com/logs/login?name=name&pwd=pwd
    public function login(Request $request)
    {
        try {
            $name = parameterCheck($request->name, 'string', '');
            $pwd = parameterCheck($request->pwd, 'string', '');

            if ($name == env('LOG_NAME', 'name') && $pwd == env('LOG_PWD', 'pwd')) {
                request()->session()->put('auth_logs', $name . $pwd);
                return redirect(URL::to('/logs/index'));
            } else {
                abort(403, '賬号密碼錯誤!');
            }

        } catch (Exception $e) {
            abort(403, '登入異常');
        }
    }

    public function index(Request $request)
    {
        $auth = $request->session()->get('auth_logs');
        if (!empty($auth)) {
            $obj = new  LogViewerController($request);
            return $obj->index($request);
        } else {
            abort(403, '請先登入');
        }
    }
}
           
laravel系統日志,請求日志友好化,可持續化

點評: 可以支援日志檔案目錄下的多層級檔案目錄掃描,很友善定制化的日志檔案,支援内容搜尋,性能更好

方案二:

composer require arcanedev/log-viewer

位址:https://packagist.org/packages/arcanedev/log-viewer#8.3.0

Laravel

安裝

注意 : 如果您使用的是Laravel>=v5.5,那麼包将自動注冊自己,是以您可以跳過本節

安裝包後,可以在providers數組的

config/app.php

中注冊服務提供程式

'providers' => [
    ...
    Arcanedev\LogViewer\LogViewerServiceProvider::class,
],
           

不需要注冊LogViewer外觀,它是自動完成的.

重要說明:

對于Laravel 8.x及更高版本,您需要将分頁樣式與LogViewer模闆相比對。預設分頁使用tailwindcss作為預設樣式。

Artisan 指令:

要釋出配置檔案和翻譯檔案,請運作以下指令:

php artisan log-viewer:publish

laravel系統日志,請求日志友好化,可持續化
laravel系統日志,請求日志友好化,可持續化
laravel系統日志,請求日志友好化,可持續化

config/log-viewer.php

'route'         => [
        'enabled'    => true,

        'attributes' => [
            'prefix'     => 'log-viewer',
			//改成你需要授權的中間件
            'middleware' => ['web', 'log.view'],
        ],
    ],
           

https://github.com/ARCANEDEV/LogViewer/issues/69

log.view

路由中間件

public function handle($request, Closure $next)
    {

        $auth = $request->session()->get('auth_view_logs');
        if (empty($auth)) {
            abort(403, '請先登入');
        }

        return $next($request);
    }
           

點評::不支援多層級檔案目錄,支援搜尋,但是統計方面更視覺化,日志内容有json内容格化式展示,官方也提供的路由方法

但是第一次打開慢一些,業務需要生成索引

方案三

EFK 或者 ELK這個是很成熟的方案了,但是需要的伺服器資源較多,如果有需求還是有必要搭一下,難度也不大,本地開發就方案一或者方案二就可以了

prometheus+grafana這個是支援k8s對未來的整理系統架構更好,比較推薦,圖形化效果更好,還能定制資料圖示

方案四

一些企業成熟的開源業務方案:

美團的logan,比較推薦,特别是想做使用者畫像的日志采集系統的,支援npm,安卓,ios sdk

騰訊的xlog,sdk支援不好,需要自己開發