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支持不好,需要自己开发