Java ロギング

Java ランタイムでは、STDOUT または STDERR への出力はすべて Cloud Logging に伝播されます。ただし、詳細なログの重要度は反映されません。標準の Java Logging API(JUL)を使用してログにメッセージを記録し、適切なログ重要度を Cloud Logging に反映できます。

別のロギング フレームワーク(SLF4JLog4j 2Apache Commons Logging など)を使用する場合は、次のいずれかの方法を使用して適切なログ重要度を伝播します。

  • 重要度が Cloud Logging に反映されるように、ログメッセージを Structured Logging JSON 形式でフォーマットします。
  • すでに正しい形式でログメッセージを伝播している Java Logging API に対して、ブリッジ / アダプタを使用してログメッセージを送信します。この手法を使用する場合は、すでに Java Logging API からロギング フレームワークにルーティングされている既存のアダプタがないことを確認してください。

関数が異なるライブラリを使用していて、それぞれのライブラリが使用するロギング フレームワークが異なる場合は、使用するロギング フレームワークをそれぞれ構成する必要があります。以下のセクションでは、さまざまなオプションの一部について説明します。

Spring Cloud Function

Spring Cloud Functions Google Cloud Adapter で Spring Cloud Function を使用する場合は、Spring Cloud の Google Cloud Logging スターターCONSOLE_JSONアペンダーを使用してログを JSON 形式で出力します。Spring では、デフォルトで SLF4J と Logback を使用しますが、SLF4J ログを Java Logging API にルーティングすることもできます。詳しくは、SLF4J をご覧ください。

Java Logging API(JUL)

サポートされているすべての Cloud Functions Java 環境には、正しい形式でログを出力する JSON ハンドラを持つ Java Logging がすでに含まれています。一部の 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 アダプタを使用してメッセージを SLF4J にルーティングし、SLF4J を構成して Java Logging API の実装を使用します。Log4j JDK Logging アダプタがインストールされていないことを確認してください。

Apache Commons Logging(JCL)

Apache Commons Logging には、Java Logging API アダプタが含まれています。Jdk14Logger を使用するように Commons Logging を構成します。詳細については、Apache Commons Logging の構成をご覧ください。