首页 > 其他分享 >laravel系统日志,请求日志友好化,可持续化

laravel系统日志,请求日志友好化,可持续化

时间:2023-02-14 10:46:20浏览次数:60  
标签:laravel log viewer request auth 日志 系统日志 logs

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.phpproviders部分已添加

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, '请先登录');
        }
    }
}

image

点评: 可以支持日志文件目录下的多层级文件目录扫描,很方便定制化的日志文件,支持内容搜索,性能更好

方案二:

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
image
image
image

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

标签:laravel,log,viewer,request,auth,日志,系统日志,logs
From: https://www.cnblogs.com/zx-admin/p/17104233.html

相关文章

  • Mysql的日志系统
    MySQL整体来看,其实就有两块:一块是Server层,它主要做的是MySQL功能层面的事情;还有一块是引擎层,负责存储相关的具体事宜。如图:本次知识总结:最开始MySQL里并没有InnoDB引擎......
  • laravel基础
    laravel 引入模板:1.returnview('admin.login');2.returnview('admin.add',['data'=>$data]);获取数据:$request->input('name'); 查询useDB;$res=DB::table('use......
  • 抓取安卓闪退日志教程
    在开发手机APP时,如果遇到应用闪退、卡顿无反应情况,往往需要抓取日志,帮助定位问题。本文简要介绍使用adb抓取日志的方法。分以下三步进行介绍:1.安装java运行环境jdk,并......
  • 抓取安卓闪退日志教程
    在开发手机APP时,如果遇到应用闪退、卡顿无反应情况,往往需要抓取日志,帮助定位问题。本文简要介绍使用adb抓取日志的方法。分以下三步进行介绍:1.安装java运行环境jdk,并配......
  • 自定义注解记录日志
    1.自定义注解2.切面类3.具体方法3.具体方法二4.具体方法  5.具体方法三6.具体方法7 ......
  • 使用 PHP 和 Laravel 构建 REST API 的教程
    RepresentationalStateTransfer( ​​REST​​ )是一种用于构建Web服务的流行软件架构样式。RESTAPI允许客户端通过向特定端点或“路由”发出HTTP请求来从服务......
  • laravel 分表日志功能
    1.生成定时任务,自动出案件表命令行创建定时任务生成脚本  phpartisanmake:commandCreateLog脚本CreateLog的handle方法生成分表的表名if(!Schema......
  • Nginx日志割接,生成周期日志
    #!/bin/bashlogs_path="/usr/local/nginx-1.14.2/logs/any/"pid_path="/usr/local/nginx-1.14.2/logs/nginx.pid"mv${logs_path}access.log${logs_path}access_$(dat......
  • Oracle 11g清理trace和alert日志
    [oracle@oraclehostorcl]$du-sh*9.8Galert4.0Kcdump4.0Khm4.0Kincident4.0Kincpkg4.0Kir4.0Klck4.0Mmetadata4.0Kmetad......
  • Laravel — P45:控制器编辑/更新 (CMP)
    在我们完整地结束这个项目之前,我们还有几篇文章要讲。之后我们将继续讨论更高级的主题。在本文中,我们将解决如何编辑记录。我们需要显示一个表单,其中已经为特定记录填充了所......