本文介紹如何在PHP運行環境下列印和查看日誌。
列印日誌
Function Compute內建了logger模組,在使用內建運行時建立的函數中,您可以通過$GLOBALS['fcLogger']
使用該內建logger模組,將列印的內容收集到建立服務時指定的Log ServiceLogstore中。使用其他方式建立的函數,您可以使用PHP提供的方法列印日誌。
記錄層級
您可以通過setLevel方法改變記錄層級,其中記錄層級從高到低如下所示。
記錄層級 | Level | 介面 | 描述 |
EMERGENCY | 600 |
| 緊急日誌 |
ALERT | 550 |
| 警示日誌 |
CRITICAL | 500 |
| 嚴重警告 |
ERROR | 400 |
| 出錯資訊 |
WARNING | 300 |
| 警告資訊 |
NOTICE | 250 |
| 通知及常規日誌 |
INFO(預設) | 200 |
| 詳細輸出資訊 |
DEBUG | 100 |
| 調試日誌 |
使用內建日誌模組列印日誌
使用該方法列印的每條日誌中都包含時間、RequestId和記錄層級等資訊。列印日誌的樣本如下:
<?php
function handler($event, $context) {
$logger = $GLOBALS['fcLogger'];
$logger->info('hello world');
$logger->critical('world hello');
$logger->setLevel(500);
$logger->info('hello world 2');
$logger->critical('world hello 2');
return 'hello world';
}
上述例子中,首先使用預設的記錄層級輸出了2條日誌,然後修改了預設記錄層級,只輸出1條日誌。
執行以上代碼輸出的日誌內容如下所示:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello 2
\nFC Invoke End RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
使用列印函數列印日誌
使用該方法列印日誌會將內容原樣輸出到日誌中。程式碼範例如下所示。
<?php
function handler($event, $context) {
var_dump("abcd");
echo "abcd 2\n";
fwrite(STDERR, "error\n");
return 'hello world';
}
輸出如下:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
/code/index.php:4:
string(4) "abcd"
abcd 2
error
\nFC Invoke End RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
上述例子中,列印函數也可以替換為其他輸出到標準輸出、標準錯誤的函數。
查看日誌
函數執行完成後,您可以在函數詳情頁的調用日誌頁簽查看日誌資訊。具體操作和說明,請參見查看調用日誌。