Java 記錄

在 Java 執行階段中,任何 STDOUTSTDERR 的輸出內容都會傳播至 Cloud Logging。不過,精細的記錄嚴重性等級不會傳播。使用標準的 Java Logging API (JUL) 記錄訊息,並將正確的記錄嚴重性層級傳播至 Cloud Logging。

如果您使用其他記錄架構,例如 SLF4JLog4j 2Apache Commons Logging,則可以透過下列任一方式傳播正確的記錄嚴重性層級:

  • 請使用結構化記錄 JSON 格式格式設定記錄訊息,以便將嚴重性層級傳播至 Cloud Logging。
  • 使用橋接/轉接程式將記錄訊息傳送至 Java Logging API,後者已以正確的格式傳播記錄訊息。如果您採用這種做法,請確認沒有現有的轉接器已從 Java Logging API 將資料路由至記錄架構。

如果函式使用不同的程式庫,且這些程式庫使用不同的記錄架構,您就需要設定每個使用的記錄架構。以下各節將說明其中幾個選項。

Spring Cloud Run 函式

如果您將 Spring Cloud Run 函式與 Spring Cloud Run 函式 Google Cloud 轉接器搭配使用,就可以使用 Spring Cloud 的 Google Cloud 記錄啟動器CONSOLE_JSON 附加元件,以 JSON 格式輸出記錄。Spring 預設會使用 SLF4J 和 Logback,但您也可以將 SLF4J 記錄轉送至 Java Logging API。詳情請參閱「SLF4J」一節。

Java Logging API (JUL)

所有支援的 Cloud Run 函式 Java 環境都包含 Java 記錄功能,其中包含 JSON 處理常式,可以正確的格式輸出記錄。某些 Java 架構可能會新增額外元件,將 JUL 連結至其他記錄架構 (例如 jul-to-slf4j bridgeLog4j JDK Logging Adapter),在這種情況下,這些記錄訊息的格式將不再正確。如果記錄訊息沒有正確的嚴重性層級,請務必移除這些橋接。

SLF4J

SLF4J 可以使用 slf4j-jdk14 記錄架構繫結,將記錄寫入 Java Logging API。詳情請參閱 SLF4J 說明文件。請確認您沒有 jul-to-slf4j 橋接。

Logback

Logback 沒有用於將記錄訊息轉送至 Java Logging API 的附加元件。不過,Logback 通常會與 SFL4J API 搭配使用,因此您可以將 SLF4J 記錄器實作項目切換為 Java Logging API

Log4j 2

Log4j 2 沒有直接轉接器,無法將記錄訊息轉送至 Java Logging API。如果您使用的是 Log4j 2,則必須先使用 Log4j 2 到 SLF4J 轉接器將訊息導向至 SLF4J,然後設定 SLF4J 以使用 Java Logging API 實作項目。請確認您沒有 Log4j JDK 記錄轉接程式。

Apache Commons Logging (JCL)

Apache Commons Logging 有 Java Logging API 轉接器。設定 Commons Logging 以使用 Jdk14Logger。詳情請參閱 Apache Commons Logging 設定頁面。