码迷,mamicode.com
首页 > Windows程序 > 详细

基于thinkphp的API日志

时间:2018-04-08 16:01:42      阅读:1074      评论:0      收藏:0      [点我收藏+]

标签:write   默认   文件   php   ati   war   超过   不同的   notice   

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日志

标签:write   默认   文件   php   ati   war   超过   不同的   notice   

原文地址:https://www.cnblogs.com/baby123/p/8744814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!