Java Logging

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

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

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

如果函式使用不同的程式庫,而這些程式庫使用不同的記錄架構,則您需要設定所用的每個記錄架構。以下各節將說明部分選項。

Spring Cloud Run 函式

如果您使用 Spring Cloud Run 函式和 Spring Cloud Run 函式 Google Cloud Adapter,可以透過 Spring Cloud 的 Google Cloud Logging StarterCONSOLE_JSON 附加程式,以正確格式輸出記錄。Spring 預設使用 SLF4J 和 Logback,但您也可以將 SLF4J 記錄路由至 Java Logging API。詳情請參閱「SLF4J」一節。

Java Logging API (JUL)

所有支援的 Cloud Run 函式 Java 環境都包含 Java Logging,以及可輸出正確格式記錄的 JSON 處理常式。部分 Java 架構可能會新增其他元件,將 JUL 橋接至不同的記錄架構 (例如 jul-to-slf4j 橋接器Log4j 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 to SLF4J Adapter 將訊息傳送至 SLF4J,然後將 SLF4J 設定為使用 Java Logging API 實作項目。請確認您沒有 Log4j JDK Logging Adapter。

Apache Commons Logging (JCL)

Apache Commons Logging 具有 Java Logging API 轉接器。將 Commons Logging 設為使用 Jdk14Logger。詳情請參閱「Apache Commons Logging 設定」頁面。