全部產品
Search
文件中心

Function Compute:日誌

更新時間:Jul 13, 2024

您可以在Node.js運行環境中列印和查看日誌,通過日誌快速定位問題或分析日誌瞭解函數執行過程和耗時等,提升系統的可靠性和穩定性。

列印日誌

函數往標準輸出stdout列印的日誌內容會被收集到建立服務時指定的Logstore中,您可以使用如下幾種方式列印日誌至標準輸出stdout。範例程式碼如下所示。

ES模組

說明
  • 此樣本僅支援運行在Node.js 18及以上版本的運行時環境。

  • 當前範例程式碼支援一鍵部署,您可以直接在Function ComputeFC中一鍵部署本代碼。nodejs-fc-log-es

export const handler = async (event, context) => {
  process.stdout.write('hi,fc\n');
  console.log('hello,world');
  context.logger.info('hello,fc');
  return "Hello World!";
};

CommonJS模組

'use strict';

exports.handler = (event, context, callback) => {
  process.stdout.write('hi,fc\n');
  console.log('hello,world');
  context.logger.info('hello,fc');
  callback(null, 'hello,world');
};

使用process.stdout.write列印日誌

使用此方法列印日誌會將內容原樣輸出到日誌中。輸出的日誌內容如下所示。

hi,fc

使用console.log列印日誌

使用此方法列印的每條日誌中都會包含時間、RequestId、記錄層級等資訊。輸出的日誌內容如下所示。

2024-03-04 07:01:16.927 1-65e571bc-158a59e8-b63f98cd471c [info] hello,world

直接使用context.logger列印日誌

當您配置的函數執行個體並發度大於1時,一個函數執行個體會同時並發處理多個請求。此時強烈建議使用context.logger列印日誌,以通過RequestId區分各並發請求的日誌。輸出的日誌內容如下所示。

2024-03-04 07:01:16.927 1-65e571bc-158a59e8-b63f98cd471c [[object Object]] hello,fc

自訂記錄層級

重要

自訂記錄層級功能,僅在運行時 Nodejs18 和 Nodejs20 支援。

通過設定函數環境變數ALIYUN_FC_LOG_LEVEL的值來自訂日誌的列印層級。自訂的記錄層級從低到高排序為:debug、info、warn、error,其中debug最低,error最高。

列印日誌的層級大於或者等於ALIYUN_FC_LOG_LEVEL的值的時候,日誌才會輸出。

例如:當您設定環境變數ALIYUN_FC_LOG_LEVEL=warn時,則只會列印記錄層級大於等於warn的日誌(即warn和error日誌)。通過console.log列印的日誌預設為info層級,info的記錄層級比設定的warn的層級低,此時不會列印info層級的日誌內容,使用process.stdout.write()列印的日誌不會受該環境變數影響,是會列印其日誌的。

操作步驟

  1. 建一個用於測試的代碼目錄,如code

  2. code目錄下,建立index.js代碼檔案,將下面範例程式碼儲存到index.js

    'use strict';
    
    exports.handler = (event, context, callback) => {
      process.stdout.write('stdout log\n');
      console.log('console log');
      context.logger.debug('context log info');
      context.logger.info('context log info');
      context.logger.warn('context log warn');
      context.logger.error('context log error');
      callback(null, 'hello,world');
    }
  3. 登入Function Compute控制台,選擇建立事件函數,運行環境需選擇Node.js 18或Node.js 20,上傳方式選擇通過檔案夾上傳代碼。更多具體操作,請參見建立事件函數

  4. 在函數詳情頁面,選擇配置頁簽,然後在左側導覽列,選擇環境變數,在環境變數地區,單擊編輯。

  5. 當設定 ALIYUN_FC_LOG_LEVEL=warn時,點擊測試函數,日誌輸出如下所示:

stdout log
2024-06-19 08:48:51.672 1--xxx-xxx-xxx [warn] context log warn
2024-06-19 08:48:51.672 1--xxx-xxx-xxx [error] context log error

查看日誌

函數執行完成後,您可以在函數詳情頁的調用日誌頁簽查看日誌資訊。具體操作和說明,請參見查看調用日誌