基于thinkphp的API日志
1.thinkphp日志
thinkphp的日志处理工作是由系统自动进行的
在开启日志记录的情况下,会记录下允许的日志级别的所有日志信息
系统的日志记录由核心的Think\Log类及其驱动完成,提供了多种方式记录了不同的级别的日志信息
可以在应用配置文件中配置需要记录的日志级别
- EMERG 严重错误,导致系统崩溃无法使用
- ALERT 警戒性错误, 必须被立即修改的错误
- CRIT 临界值错误, 超过临界值的错误
- ERR 一般性错误
- WARN 警告性错误, 需要发出警告的错误
- NOTICE 通知,程序可以运行但是还不够完美的错误
- INFO 信息,程序输出信息
- DEBUG 调试,用于调试信息
- SQL SQL语句,该级别只在调试模式开启时有效
thinkphp3.2日志处理类位于ThinkPHP\Library\Think\Log.class.php
系统的日志记录是自动的,手动记录有两种方式
(1) 非实时
记录日志
Log::record($message,$level=self::ERR,$record=false)
保存记录的日志
Log::save($type='',$destination='')
说明:
Log::record方法必须结合Log::save方法才能完成日志记录,因为record方法只是把日志信息保存到内存,并没有真正写入日志,直到调用Log::save方法
(2) 实时(直接写入)
Log::write($message,$level=self::ERR,$type='',$destination='')
message(必须):要记录的日志信息,字符串
level(可选):要记录的日志级别,默认为ERR 错误
type(可选):日志记录方式,默认为空取LOG_TYPE配置
destination(可选):日志记录目标,默认为空自动生成或LOG_DEST配置
extra(可选):日志记录额外参数,默认为空取LOG_EXTRA配置
2.API接口需要记录请求参数,及返回值
因此在ThinkPHP\Library\Think\Log.class.php里仿照write增加函数
static function writeApi($message,$level=self::ERR,$type='',$destination='',$data=array()) {
if(!self::$storage){
$type = $type ? : C('LOG_TYPE');
$class = 'Think\\Log\\Driver\\'. ucwords($type);
$config['log_path'] = C('LOG_PATH');
self::$storage = new $class($config);
}
if(empty($destination)){
$destination = C('LOG_PATH').date('YmdH').'.log';
}
$msg = "{$level}: {$message}".PHP_EOL;
$params = $_REQUEST;
if(key_exists('thinkphp_show_page_trace',$params)){
unset($params['thinkphp_show_page_trace']);
}
if(key_exists('i18next',$params)){
unset($params['i18next']);
}
if(key_exists('__forward__',$params)){
unset($params['__forward__']);
}
if(key_exists('PHPSESSID',$params)){
unset($params['PHPSESSID']);
}
$msg .= "['params]: ".json_encode($params).PHP_EOL;
$msg .= "[data]: ".json_encode($data).PHP_EOL;
self::$storage->write($msg, $destination);
}
说明:
$data就是返回的数据
调用:
(1)Log::writeApi('用户列表',Log::INFO,'','',$list);

(2)Log::writeApi('用户信息',Log::INFO,'','',$info);

日志文件保存在Runtime\Logs\Admin\2018040814.log里
基于thinkphp的API日志的更多相关文章
- 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块
Log4a 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块 github地址 : https://github.com/EalenXie/log4a 在API每次被请求时 ...
- 一个基于thinkphp的微信授权登陆功能
共享一份基于thinkphp开发的用户授权登陆的功能代码,本实例使用thinkphp的第三方微信公众平台PHP-SDK,地址https://github.com/dodgepudding/wechat ...
- .NET Core微服务之基于Ocelot实现API网关服务(续)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...
- gitlab svlogd runsv 基于Rotated Log的日志统计
小结: 1. 日志轮询 log roate 日志文件自动转存和重命名 2. rotated log独立于其他模块,可以以静态库或者动态库的形式支持二次开发: 3. [root@d1 ~]# gitla ...
- Resumable.js – 基于 HTML5 File API 的文件上传
Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...
- 基于.NET Socket API 通信的综合应用
闲谈一下,最近和客户进行对接Scoket 本地的程序作为请求方以及接受方,对接Scoket 的难度实在比较大,因为涉及到响应方返回的报文的不一致性,对于返回的报文的格式我需要做反序列化的难度增大了不少 ...
- 基于ArcGIS JS API的在线专题地图实现
0 引言 专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
[PHP]基于ThinkPHP框架搭建OAuth2.0服务 http://leyteris.iteye.com/blog/1483403
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
随机推荐
- 记录 am335x 因为 pinmux 配置不对导致 不断的原因
其实很简单,是因为 中断不仅仅需要 gpio 的 input 属性, 还需要 pull_up 的数据 {"gpmc_ad11.gpio0_27", OMAP_MUX_MODE7 | ...
- [deb]制作deb包
转自:http://www.cnblogs.com/Genesis-007/p/5219960.html 查看系统安装了哪些deb包: dpkg -l 打包: dpkg -b dir result.d ...
- PowerDesigner使用教程【转】
PowerDesigner使用教程 —— 概念数据模型 一.概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这 ...
- .net dll类库 生成chm说明文档
效果图: 制作步骤: 1.下载Sandcastle http://shfb.codeplex.com/releases/view/105809 2.下载Html Help WorkShop http: ...
- Scrapy安装错误:Microsoft Visual C++ 14.0 is required
问题描述 当前环境win10,python_3.6.1,64位. 在windows下,在dos中运行pip install Scrapy报错: building 'twisted.test.raise ...
- mongoDB之监控工具mongostat
mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mon ...
- Axiom3D:数据绑定基本流程
在前面我们学习OpenGL时,不管绘制如球,立方体,平面,地面,动画模型中最常用的几个操作有创建缓冲区,写入缓冲区.在Axiom中,相关的操作被整合与组织到VertexData,IndexData中, ...
- IDEA MAVEN Failed to create a Maven project 'C:/gitProjects/mayProj/pom.xml' already exists in VFS
When adding the module to an existing module that already has a POM, it is necessary to manually spe ...
- 自定义python web框架
-- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ -- bxslider http://bxsli ...
- 根据URL获取参数值得出json结果集,对外给一个接口让别人调用
背景:测试接口的时候,经常都是后端get\post请求直接返回json结果集,很想知道实现方式,虽然心中也大概了解如何实现,但还不如自己来一遍踏实! 先来看一下结果吧: 以下对一个web的get接口进 ...