【PHP框架應(yīng)用-Yii2】記錄API接口執(zhí)行時(shí)間

BaseController 中繼承父類的 beforeActionafterAction 勾子,記錄API運(yùn)行開始,以及結(jié)束時(shí)間

private $actionStart = 0;
private $actionEnd = 0;
// beforeAction, afterAction 用來記錄API請(qǐng)求接口,以及耗時(shí)
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請(qǐng)求接口,耗時(shí)took
    logInfo(print_r(["api" => request()->url, "took" => sprintf("%.5f", $this->actionEnd - $this->actionStart)], true));
    return $afterAction;
}

logInfo 日志記錄方法,這個(gè)方法是對(duì) YII info日志的二次封裝

// yii日志組件記錄日志
if (!function_exists("logInfo")) {
    function logInfo($message, $category = "debug")
    {
        // 記錄info日志,用于調(diào)試
        $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'
]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 日志 Yii提供了一個(gè)高度自定義化和高擴(kuò)展性的日志框架。根據(jù)使用場(chǎng)景的不同,你可以很容易的對(duì)各種消息就行記錄、過濾...
    柏樹_Jeff閱讀 8,455評(píng)論 1 11
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,532評(píng)論 4 61
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,350評(píng)論 0 10
  • B3張黎#周檢視#0714-0721(2017)百日目標(biāo)檢視目標(biāo)1:晚10早5的作息目標(biāo)2:心情好,身體好!目標(biāo)3...
    小汐_eea7閱讀 199評(píng)論 0 0
  • 文/風(fēng)雨綫 時(shí)間/ 2017年5月5日 我想,對(duì)于周五下午,心里總還是充滿期待的,比如,今天,醒了,也可以耍賴,可...
    風(fēng)雨綫閱讀 389評(píng)論 4 4

友情鏈接更多精彩內(nèi)容