※ 本記事は、Harry Smithによる”Structured logging in OCI Functions“を翻訳したものです。

2026年8月7日


このブログ投稿では、最近リリースされたOCI Functionsでの構造化ロギングのサポートを使用して、Functionsの運用エクスペリエンスを向上させる方法について説明します。構造化ロギングのサポートにより、ファンクション・コードによって生成されるJSON形式のログの構造を保持できるため、ログ行の表示および集計が向上します。

背景

リリース以来、OCI FunctionsはOCI Service Logsとの統合をサポートしており、ユーザーはOCI Loggingサービスのファンクション・コードによって生成されたログを表示できます。有効にすると、stdout/stderrを介して出力されたログ行は、OCI Loggingサービスに文字列として表示されます。

A screenshot showing a plain text string in the 'message' field in the OCI Logging UI

これは、前述の例のように、プレーン・テキスト・ログ行を出力する関数には十分に機能します。ただし、1つの文字列フィールドと、そのフィールドの単純なテキスト検索のみに制限されます。

より詳細なログを提供するために、最新のアプリケーションは通常、ログ行ごとにJSONオブジェクトを出力することがあります。このオブジェクトには複数のフィールドを含めることができ、オペレータはそれらのフィールドに基づいてフィルタできます。たとえば、ロギング・フレームワークには、その特定のログ行の重大度を示す「level」フィールドが含まれているのが一般的です。

以前は、ファンクション・コードがこの構造化形式でログ行を出力した場合でも、ログ行はOCI Loggingに文字列として表示され、JSONはエスケープされるため、その有用性が制限されていました。

A screenshot showing a an escaped JSON object in a string in the 'message' field in the OCI Logging UI

構造化ロギング・サポートの開始により、アプリケーションで「ロギング行フォーマット」を構成できるようになりました。サポートされている値は2つあります:

  • プレーン・テキスト – これは前述の既存の動作です。アプリケーション内の関数からのログ行は、OCI Loggingで文字列として表示されます。これはデフォルトのモードのままです。
  • JSON – これは、ログ行をJSONとして処理する必要があることを示します。有効なJSONであるアプリケーションを含むファンクションからのログ行は、JSONとしてOCI Loggingに伝播されます。有効なJSONでない行は、文字列として伝播されます。

はじめに

構造化ロギングのサポートは、通常のメカニズム(OCI SDK、CLI、TerraformおよびOCIコンソール)を介して構成できます。

コンソールの例

  1. OCIコンソールでFunctionsサービスを開きます。
  2. アプリケーションを選択します。
  3. 「Application Information」で、「Logging line format」行で「Edit」をクリックします。
  4. JSON」を選択し、「Update」をクリックします。
A screenshot showing the application details page in the OCI Console, with the 'Logging line format' field highlighted
A screenshot showing the 'Edit log line format' modal in the OCI Console, with options of 'Plain text' or 'JSON'

CLIの例

新規アプリケーション

oci fn application create \
  --compartment-id <COMPARTMENT> \
  --display-name <NAME> \
  --subnet-ids '["<SUBNET>"]' \
  --logging '{"lineFormat":"JSON"}'

Update existing application

oci fn application update \
  --application-id <APPLICATION> \
  --logging '{"lineFormat":"JSON"}'

ログの表示

アプリケーションのロギング行形式をJSONに構成することで、Logging Search UIの各行でカスタム・ログ・フィールドを確認できるようになりました:

A screenshot showing an expanded native JSON object in the 'message' field in the OCI Logging UI

「message」フィールド内には、自分のファンクションによって出力されたJSONログ行のフィールド(「level」や「myCustomerId」)が表示されます。Logging Search UIを使用して、サマリー・ビューに列を追加できます:

A screenshot showing the right-click menu for a field in the OCI Logging UI, with the 'Add to summary view' button highlighted

これにより、アプリケーションに関連するフィールドに焦点を当てたビューを構築できます:

A screenshot showing the summary view in the OCI Logging UI, with several columns for application-specific log fields

また、特定のフィールドの値で簡単にフィルタできます:

A screenshot showing the right-click menu for a field in the OCI Logging UI, with the 'Filter matching' button highlighted

これにより、特定の顧客IDに関連するログ行などに集中できます:

A screenshot showing the summary view in the OCI Logging UI, with several columns for application-specific log fields. Only log lines where the value of the 'myCustomerId' field is 'john' are shown

高度なログ問合せの詳細は、OCI Loggingのドキュメントを参照してください。

今すぐ試してみる

Functionsの構造化ロギング・サポートは、すべての商用OCIリージョンで追加コストなしで利用できるようになりました。この機能により、関数からのJSON形式のログを活用して、フィルタおよび検索のために構造化データを表示できるようになります。OCI Functionsを今すぐ使い始め、これらの新機能により、機能の実行の運用エクスペリエンスがどのように改善されるかをご覧ください。

さらに学習するには、次のリソースを参照してください: