【Laravel】增加日志记录
文章目录
- 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】增加日志记录相关推荐
- HAproxy增加日志记录功能和自定义日志输出内容、格式
http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能 1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...
- 配置Haproxy增加日志记录功能
2019独角兽企业重金招聘Python工程师标准>>> CentOS 7上yum安装的Haproxy,默认没有记录日志.需要做一下配置才能记录日志. 1.创建日志文件/var/log ...
- Qt5之 简单的日志记录工具类
qt5 自己做的一个读写 sqlite3 的数据工具,能打开sqlite3格式的数据库文件 地址:https://blog.csdn.net/HK_5788/article/details/80963 ...
- laravel接合monolog实现日志记录到Elasticsearch实践
需求 记录所有前台用户请求返回数据到ES 实践 引用拓展包 $ composer require ruflin/elastica: ^5.0 ruflin/elastica 拓展包说明 Elastic ...
- PHP日志记录工具Monolog
github地址:https://github.com/Seldaek/monolog 使用 Monolog 安装 核心概念 日志级别 配置一个日志服务 为记录添加额外的数据 使用通道 自定义日志格式 ...
- crontab 各参数详解及如何查看日志记录
crontab各参数说明: crontab [-u user] [file] crontab [-u user] [-e|-l|-r] crontab -l -u root 查看root用户的任务表 ...
- 解释一下SQLSERVER事务日志记录
解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...
- nginx php 错误日志,PHP 错误与异常的日志记录
提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到 ...
- PHP 错误与异常的日志记录
提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到 ...
最新文章
- 找回MySQL的root密码
- JDBC基础知识复习
- [html] 在a标签中,怎样防止链接跳转?
- synchronized关键字理解
- ServiceMash服务网格--理解lstio/envoy
- element ui el-dialog 居中,并且内容多的时候内部可以滚动
- linux先安装svn server
- 【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
- IT程序猿常用编辑工具:UltraEdit for Mac v21.00.0.12中文版
- 面试鹅厂,我被虐的体无完肤。。。
- 抱歉登录伺服务器暂时离线,为什么我离线了,换服务器的时候老提示我重复 – 手机爱问...
- 非广延统计分布结构化分析的本征坐标法应用
- 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
- 简述Python垃圾回收机制
- 量子计算机用什么传导信息,量子是如何传递信息的?
- win10DCH驱动卸载后无法安装标准驱动的问题(与首选图形处理器拒绝访问)
- 直播代码中关于敏感词替换的代码编辑
- 恒讯科技分析好消息尼泊尔有自己的绝地求生服务器了
- vscode配置备忘录
- jTemplates异步加载实现与HTML5 video视频开发
热门文章
- 基本数据结构—Hash哈希
- seq2seq和Transformer
- Delete Master Data时的注意事项
- javascript 复制功能 兼容所有浏览器的解决方案
- 3157 Java vs C++模拟
- ESP32 SDK OTA Demo升级流程
- 进程环境详解(四)---getenv、putenv和setenv函数详解
- esp8266make相关文件改进
- 家里宽带628连不上_连不上无线网络?到底是路由器还是电脑的“锅”,看完这篇就知道...
- stdthread(7)并发unique_lock