【PHP框架应用-Yii2】记录API接口执行时间

BaseController 中继承父类的 beforeActionafterAction 勾子,记录API运行开始,以及结束时间

private $actionStart = 0;
private $actionEnd = 0;
// beforeAction, afterAction 用来记录API请求接口,以及耗时
public function beforeAction($action)
{
    $this->actionStart = microtime(true);
    return parent::beforeAction($action);
}

public function afterAction($action, $result)
{
    $this->actionEnd = microtime(true);
    $afterAction = parent::afterAction($action, $result);
    // 记录API请求接口,耗时took
    logInfo(print_r(["api" => request()->url, "took" => sprintf("%.5f", $this->actionEnd - $this->actionStart)], true));
    return $afterAction;
}

logInfo 日志记录方法,这个方法是对 YII info日志的二次封装

// yii日志组件记录日志
if (!function_exists("logInfo")) {
    function logInfo($message, $category = "debug")
    {
        // 记录info日志,用于调试
        $logEnable = Yii::$app->params["log_enable"];
        if (is_null($logEnable) || $logEnable === false) {
            return;
        }
        Yii::info(sprintf("%s\n\tmemory used %d bytes [%.3f KB]", $message, memory_get_usage(), memory_get_usage()/1024), $category);
    }
}

日志输出如下

2019-03-14 02:46:31 [127.0.0.1][-][-][info][debug] Array
(
    [api] => /protocol?page=1&limit=12&unit=10m&time[]=1551854884755&time[]=1552459684755&q=&es_type=http&src_ip=&src_port=&dst_ip=&dst_port=&sensor_id=&uids=&prs_debug=1
    [took] => 0.18194
)

    memory used 8996368 bytes [8785.516 KB]
    in /Users/tophant.yunfei/work/prs-rebirth-php/common/utils/function.php:316
    in /Users/tophant.yunfei/work/prs-rebirth-php/backend/controllers/RestBaseController.php:61

Yii-log 配置如下

[
    'class' => 'yii\log\FileTarget',
    'levels' => ['info'],
    'categories' => ['debug', 'sql', 'elastic', 'py'],
    'logVars' => [],
    'logFile' => '@runtime/logs/info.log'
]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 日志 Yii提供了一个高度自定义化和高扩展性的日志框架。根据使用场景的不同,你可以很容易的对各种消息就行记录、过滤...
    柏树_Jeff阅读 8,372评论 1 11
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,848评论 0 10
  • B3张黎#周检视#0714-0721(2017)百日目标检视目标1:晚10早5的作息目标2:心情好,身体好!目标3...
    小汐_eea7阅读 178评论 0 0
  • 文/風雨綫 时间/ 2017年5月5日 我想,对于周五下午,心里总还是充满期待的,比如,今天,醒了,也可以耍赖,可...
    風雨綫阅读 335评论 4 4