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, '請先登入');
}
}
}

點評: 可以支援日志檔案目錄下的多層級檔案目錄掃描,很友善定制化的日志檔案,支援内容搜尋,性能更好
方案二:
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
在
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支援不好,需要自己開發