基于thinkphp的API日志
Posted 逆水行舟,不进则退
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于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日志的主要内容,如果未能解决你的问题,请参考以下文章