文章目录

  • Logs 表结构
  • App\Models\Model\Logs
  • App\Http\Middleware\OperationLogs 中间件
  • app\Http\Kernel 注册中间件
  • 生成并优化自动加载文件
  • Controller 获取Log日志数据

Logs 表结构

App\Models\Model\Logs

<?php
namespace App\Models;use App\Models\Model;/*** 日志表*/
class Logs extends Model
{protected $connection = 'mysql';protected $table = "logs";protected $primaryKey = "id";public $timestamps = false;public function user(){return $this->belongsTo('App\User', 'uid', 'id');}/*** 根据路由,对各API 分组分类*/public static function apiStyle(){return [['label' => '全部','value' => '',],['label' => '设备','value' => 'device',],];}public function scopeSearchByPath($query, $path){if ($path != '') {$query->where(function ($query) use ($path) {$query->where("path", 'like', '%' . $path . '%');});}return $query;}
}

App\Http\Middleware\OperationLogs 中间件

此部分作用: 插入数据

<?phpnamespace App\Http\Middleware;use App\Models\Logs;
use Auth;
use Closure;
use Illuminate\Http\Request;class OperationLogs
{/*** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure  $next* @return mixed*/public function handle(Request $request, Closure $next){$request->setTrustedProxies($request->getClientIps());// $project = Auth::guard();$noRecordPath = ($request->path() != 'api/device/lists');$noGet = ('GET' != $request->method());if ($noGet && $noRecordPath) {$userId = !empty(auth('api')->check()) ? auth('api')->id() : 0;$input = $request->all();$log = new Logs();$log->uid = $userId;$log->path = $request->path();$log->method = $request->method();$log->ip = $request->getClientIp();$log->sql = '';$log->input = json_encode($input, JSON_UNESCAPED_UNICODE);$log->project = '';$log->created_at = date('Y-m-d H:m:s');$log->save(); // save log}return $next($request);}
}

app\Http\Kernel 注册中间件

// 注意是路由的中间组,是属于web,还是 api,请注意!!!protected $middlewareGroups = ['web' => [.....],'api' => ['throttle:60,1','bindings',\App\Http\Middleware\OperationLogs::class,],];

生成并优化自动加载文件

执行 composer dump-autoload --optimize

Controller 获取Log日志数据

<?phpnamespace App\Http\Controllers;use App\Models\Logs;
use Illuminate\Http\Request;class LogsController extends CommonController
{/*** Create a new controller instance.** @return void*/public function __construct(){@parent::__construct();$this->middleware('auth');}/*** 获取操作日志信息*/public function ajaxGetLogsList(){$page = Request()->input('page', 1);$select = Request()->input('select');$list = Logs::with(['user'])->SearchByPath($select['path'])->forPage($page, $this->LIMIT)->orderBy('id', 'desc')->get();$total = Logs::SearchByPath($select['path'])->count('id');$data['list'] = $list;$data['total'] = $total;$data['limit'] = $this->LIMIT;$data['apiStyle'] = Logs::apiStyle();return $list ? $this->ajaxSuccess($data, "加载成功") : $this->ajaxFail($data, "暂无数据");}
}

【Laravel】增加日志记录相关推荐

  1. HAproxy增加日志记录功能和自定义日志输出内容、格式

    http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能   1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...

  2. 配置Haproxy增加日志记录功能

    2019独角兽企业重金招聘Python工程师标准>>> CentOS 7上yum安装的Haproxy,默认没有记录日志.需要做一下配置才能记录日志. 1.创建日志文件/var/log ...

  3. Qt5之 简单的日志记录工具类

    qt5 自己做的一个读写 sqlite3 的数据工具,能打开sqlite3格式的数据库文件 地址:https://blog.csdn.net/HK_5788/article/details/80963 ...

  4. laravel接合monolog实现日志记录到Elasticsearch实践

    需求 记录所有前台用户请求返回数据到ES 实践 引用拓展包 $ composer require ruflin/elastica: ^5.0 ruflin/elastica 拓展包说明 Elastic ...

  5. PHP日志记录工具Monolog

    github地址:https://github.com/Seldaek/monolog 使用 Monolog 安装 核心概念 日志级别 配置一个日志服务 为记录添加额外的数据 使用通道 自定义日志格式 ...

  6. crontab 各参数详解及如何查看日志记录

    crontab各参数说明: crontab [-u user] [file] crontab [-u user] [-e|-l|-r] crontab -l -u root 查看root用户的任务表 ...

  7. 解释一下SQLSERVER事务日志记录

    解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...

  8. nginx php 错误日志,PHP 错误与异常的日志记录

    提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到 ...

  9. PHP 错误与异常的日志记录

    提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到 ...

最新文章

  1. 找回MySQL的root密码
  2. JDBC基础知识复习
  3. [html] 在a标签中,怎样防止链接跳转?
  4. synchronized关键字理解
  5. ServiceMash服务网格--理解lstio/envoy
  6. element ui el-dialog 居中,并且内容多的时候内部可以滚动
  7. linux先安装svn server
  8. 【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
  9. IT程序猿常用编辑工具:UltraEdit for Mac v21.00.0.12中文版
  10. 面试鹅厂,我被虐的体无完肤。。。
  11. 抱歉登录伺服务器暂时离线,为什么我离线了,换服务器的时候老提示我重复 – 手机爱问...
  12. 非广延统计分布结构化分析的本征坐标法应用
  13. 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
  14. 简述Python垃圾回收机制
  15. 量子计算机用什么传导信息,量子是如何传递信息的?
  16. win10DCH驱动卸载后无法安装标准驱动的问题(与首选图形处理器拒绝访问)
  17. 直播代码中关于敏感词替换的代码编辑
  18. 恒讯科技分析好消息尼泊尔有自己的绝地求生服务器了
  19. vscode配置备忘录
  20. jTemplates异步加载实现与HTML5 video视频开发

热门文章

  1. 基本数据结构—Hash哈希
  2. seq2seq和Transformer
  3. Delete Master Data时的注意事项
  4. javascript 复制功能 兼容所有浏览器的解决方案
  5. 3157 Java vs C++模拟
  6. ESP32 SDK OTA Demo升级流程
  7. 进程环境详解(四)---getenv、putenv和setenv函数详解
  8. esp8266make相关文件改进
  9. 家里宽带628连不上_连不上无线网络?到底是路由器还是电脑的“锅”,看完这篇就知道...
  10. stdthread(7)并发unique_lock