本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
日誌層級篩選
Lambda 可以篩選函數的日誌,以便僅將特定詳細資料層級或更低層級的日誌傳送到 CloudWatch 日誌。您可以針對函數的系統日誌 (Lambda 產生的日誌) 和應用程式日誌 (函數程式碼產生的日誌) 分別設定日誌層級篩選。
對於 支援的執行期和記錄方法,您無需對函數程式碼進行任何變更,Lambda 即可篩選函數的應用程式日誌。
對於所有其他執行期和記錄方法,您的函數程式碼必須將日誌事件輸出至 stdout 或 stderr 作為 JSON 格式的物件,其中包含與索引鍵 "level" 配對的索引鍵值)。例如,Lambda 會將下列輸出解譯為 stdout 作為 DEBUG 層級日誌檔。
print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')如果 "level" 值欄位無效或遺失,Lambda 會將日誌輸出指派層級 INFO。若要讓 Lambda 使用時間戳記欄位,您必須以有效的 RFC 3339
命名時間戳記索引鍵時,請遵循您使用的執行期慣例。Lambda 支援受管理執行期使用的大多數通用命名慣例。
注意
若要使用日誌層級篩選,您的函數必須設定為使用 JSON 記錄格式。所有 Lambda 受管執行期的預設日誌格式目前都是純文字。若要瞭解如何將函數的日誌格式設定為 JSON,請參閱 設定函數的日誌格式。
對於應用程式日誌 (由函數程式碼生成的日誌),您可以在以下日誌層級之間進行選擇。
| 日誌層級 | 標準用量 |
|---|---|
| TRACE (大多數詳細資訊) | 用於追蹤程式碼執行路徑的最精細資訊 |
| DEBUG | 系統偵錯的詳細資訊 |
| INFO | 記錄函數正常操作的訊息 |
| WARN | 有關可能導致未解決意外行為的潛在錯誤的消息 |
| ERROR | 有關阻止程式碼按預期執行的問題的訊息 |
| FATAL (最少詳細資訊) | 有關導致應用程式停止運作的嚴重錯誤訊息 |
當您選取日誌層級時,Lambda 會將該層級或更低層級的日誌傳送至 CloudWatch Logs 日誌。例如,如果您將函數的應用程式日誌層級設定為 WARN,Lambda 就不會在 INFO 和 DEBUG 層級傳送日誌輸出。日誌篩選的預設應用程式日誌層級為 INFO。
當 Lambda 篩選函數的應用程式日誌時,沒有層級的日誌訊息將被指派日誌等級 INFO。
對於系統日誌檔 (Lambda 服務產生的日誌檔),您可以在下列日誌層級進行選擇。
| 日誌層級 | 用量 |
|---|---|
| DEBUG (大多數詳細資訊) | 系統偵錯的詳細資訊 |
| INFO | 記錄函數正常操作的訊息 |
| WARN (最少詳細資訊) | 有關可能導致未解決意外行為的潛在錯誤的消息 |
當您選取日誌層級時,Lambda 會在該層級 (含) 或更低層級傳送日誌。例如,如果您將函數的系統日誌層級設定為 INFO,Lambda 不會在 DEBUG 層級傳送日誌輸出。
根據預設,Lambda 會將系統日誌層級設定為 INFO。透過此設定,Lambda 會自動將 "start" 和 "report" 日誌訊息傳送到 CloudWatch。若要接收更多或更少詳細的系統日誌,請將日誌層級變更為 DEBUG 或 WARN。若要查看 Lambda 映射不同系統日誌事件的記錄層級清單,請參閱 系統日誌層級事件映射。
設定日誌層級篩選
若要為您的函數設定應用程式和系統日誌層級篩選,您可以使用 Lambda 主控台或 AWS Command Line Interface (AWS CLI)。您也可以使用 CreateFunction 和 UpdateFunctionConfiguration Lambda API 命令、 AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function 資源和 CloudFormation AWS::Lambda::Function 資源來設定函數的日誌層級。
請注意,如果您在程式碼中設定函數的日誌層級,此設定會優先於您的任何其他日誌層級設定。例如,如果您使用 Python logging setLevel() 方法將函數的記錄層級設定為 INFO,則此設定的優先級將高於您使用 Lambda 主控台設定的 WARN 層級。
若要設定現有函數的應用程式或系統日誌層級 (主控台)
開啟 Lambda 主控台中的 函數頁面
。 -
選擇一個函數。
-
在函數組態頁面上,選擇監視和操作工具。
-
在日誌組態窗格中,選擇編輯。
-
在日誌內容之下,針對日誌檔格式,確保已選取 JSON
-
使用選項按鈕,為您的函數選擇所需的應用程式日誌層級和系統日誌層級。
-
選擇儲存。
若要設定現有函數的應用程式或系統日誌層級 (AWS CLI)
-
若要變更現有函數的應用程式或系統日誌層級,請使用 update-function-configuration
命令。使用 SystemLogLevel將--logging-config設定為DEBUG、INFO或WARN中的其中一項。設定ApplicationLogLevel為DEBUG、INFO、WARN、ERROR或FATAL之一。aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
若要在建立函數時設定日誌層級篩選
-
若要在建立新函數時設定日誌層級篩選,請使用 create-function
命令將 --logging-config設定為SystemLogLevel和ApplicationLogLevel金鑰。設定SystemLogLevel為DEBUG、INFO或WARN之一。設定ApplicationLogLevel為DEBUG、INFO、WARN、ERROR或FATAL之一。aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
系統日誌層級事件映射
對於 Lambda 產生的系統層級日誌事件,以下資料表定義指派給每個事件的日誌層級。若要進一步瞭解資料表中所列事件,請參閱 Lambda 遙測 API Event 結構描述參考
| 事件名稱 | 條件 | 指派的日誌層級 |
|---|---|---|
| initStart | runtimeVersion已設定 | INFO |
| initStart | runtimeVersion未設定 | DEBUG |
| initRuntimeDone | status=success | DEBUG |
| initRuntimeDone | status!=success | WARN |
| initReport | initializationType!=on-demand | INFO |
| initReport | initializationType=on-demand | DEBUG |
| initReport | status!=success | WARN |
| restoreStart | runtimeVersion已設定 | INFO |
| restoreStart | runtimeVersion未設定 | DEBUG |
| restoreRuntimeDone | status=success | DEBUG |
| restoreRuntimeDone | status!=success | WARN |
| restoreReport | status=success | INFO |
| restoreReport | status!=success | WARN |
| 入門 | - | INFO |
| runtimeDone | status=success | DEBUG |
| runtimeDone | status!=success | WARN |
| 報告 | status=success | INFO |
| 報告 | status!=success | WARN |
| 副檔名 | state=success | INFO |
| 副檔名 | state!=success | WARN |
| logSubscription | - | INFO |
| telemetrySubscription | - | INFO |
| logsDropped | - | WARN |
注意
使用遙測 API 即時存取延伸功能的遙測資料 始終發出一組完整的平台事件。設定 Lambda 傳送至 CloudWatch 的系統日誌層級不會影響 Lambda 遙測 API 行為。
使用自訂執行期的應用程式日誌層級篩選
當您為函數設定應用程式日誌層級篩選時,Lambda 會在幕後使用 AWS_LAMBDA_LOG_LEVEL 環境變數在執行期設定應用程式日誌層級。Lambda 也會使用 AWS_LAMBDA_LOG_FORMAT 環境變數來設定函數的日誌格式。您可以使用這些變數,將 Lambda 進階日誌控制項整合至自訂執行期。
若要透過 Lambda 主控台和 Lambda APIs AWS CLI使用自訂執行期來設定函數的記錄設定,請將您的自訂執行期設定為檢查這些環境變數的值。然後,您可以根據您選取的日誌格式和日誌層級來設定執行期的日誌程式。