zoukankan      html  css  js  c++  java
  • 基于thinkphp的API日志

    1.thinkphp日志

    thinkphp的日志处理工作是由系统自动进行的

    在开启日志记录的情况下,会记录下允许的日志级别的所有日志信息

     系统的日志记录由核心的ThinkLog类及其驱动完成,提供了多种方式记录了不同的级别的日志信息

    可以在应用配置文件中配置需要记录的日志级别

    • EMERG 严重错误,导致系统崩溃无法使用
    • ALERT 警戒性错误, 必须被立即修改的错误
    • CRIT 临界值错误, 超过临界值的错误
    • ERR 一般性错误
    • WARN 警告性错误, 需要发出警告的错误
    • NOTICE 通知,程序可以运行但是还不够完美的错误
    • INFO 信息,程序输出信息
    • DEBUG 调试,用于调试信息
    • SQL SQL语句,该级别只在调试模式开启时有效

    thinkphp3.2日志处理类位于ThinkPHPLibraryThinkLog.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接口需要记录请求参数,及返回值

    因此在ThinkPHPLibraryThinkLog.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);

    日志文件保存在RuntimeLogsAdmin2018040814.log里

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/baby123/p/8744814.html
Copyright © 2011-2022 走看看