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里

  • 相关阅读:
    块级标签与预格式化文本标签----------大多数XHTML可以表示为两种类型的标签:块标签(block tag)和内联标签(inline tag)
    下拉框与下拉框之间的联动效果
    下拉框与文本框之间的转换
    设置密码是否为可见
    html表单
    HTML基础2——综合案例3——创建考试报名表格
    HTML基础2——综合案例2——复杂的嵌套列表
    java配置、IntelliJ IDEA Ultimate激活、
    字节流转字符流OutputStreamWriter、InputStreamReader,关闭流的方法
    文件字节流、字符流、缓冲字节流、缓冲字符流、数据流
  • 原文地址:https://www.cnblogs.com/baby123/p/8744814.html
Copyright © 2011-2022 走看看