0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ODCのLogger API (JavaScript)

Posted at

ODCが提供するJavaScript APIの中に、ログ出力を行うLoggerがある。

ドキュメント

Logger - ODC Documentation

erorr API

役割・機能

クライアント側から、ODC PortalのLogsにログを出力する。
SeverityはError。

使い方

Client ActionのフローにJavaScript要素を配置し、以下のように呼ぶ。

// カテゴリとエラーメッセージを指定するパターン
$public.Logger.error("Logger Test", "Error Message");
// ↑に加えてError Objectを指定するパターン(例外処理時に使う)
let err = new Error("Error Object");
$public.Logger.error("Logger Test", "Error Message", err);

引数は、以下の通り。1と2が必須。

  1. category (string): 出力するログをグループにまとめるキー情報らしい。現時点(2025/01/26) では特に使われていないように見える
  2. message (string) または error (Errorオブジェクト): ODC Portal/LogsでMessageとして出力される
  3. (任意)error (Errorオブジェクト): 指定したら、messageに加えてErrorオブジェクトの滅っセージ部分も出力された

以下は、2番目の例(messageとerror療法を指定)での出力結果。Message項目を見ると、APIのmessageが1行目、errorのメッセージ部分は2行目に出力されている。
スクリーンショット 2025-01-26 0.42.06.png

サーバー側へログを登録する通信を覗いて見る

ブラウザの開発者ツール > ネットワークタブを開いた状態でログを発生させて覗いてみる。
スクリーンショット 2025-01-26 15.33.53.png

この観察によると、

  • JavaScript APIで記録したログは、「https://Host/App名/v2/logs」というアドレスへのリクエストでサーバーに反映される
  • 短時間に複数のログAPI呼び出しをすると、一度のv2/logs呼び出しで複数のログが記録される
  • 各ログは、v2/logs呼び出しリクエストのresourceLogs[0]/scopeLogs[0]/logRecordsに配列要素として渡される
  • いくつかODC Portal/Logsページも併せて検討すると、恐らく
    • attributes配列内のkeyがexceptionで始まる要素に渡したErrorオブジェクトの情報がわたる
    • 渡したcategoryはattributes配列内のkey=outsystems.log.message.tag項目に入る
    • attributes配列内のkey=outsystems.error.codeの要素には、ODCが決めたエラーコードが自動設定される→ODC Portal/LogsではMessageの先頭に表示される
    • 渡したエラーメッセージそのものは、attributesではなく、body/stringValueに渡される
    • severityNumberとseverityTextでログレベルの制御をしていそう

2025/01/26時点ではサーバサイドでエラーログを出力するにはException Handlerを使うしかないと思う。しかし、上で見た方法ででErrorログを出せるなら、基盤側にはエラーログを受け取る機能はあるので、OutSystems 11にあったLogErrorをODCにも作って欲しいところ。

log API

役割・機能

クライアント側から、ODC PortalのLogsにログを出力する。
SeverityはInfo。

使い方

Client ActionのフローにJavaScript要素を配置し、以下のように呼ぶ。

// カテゴリとエラーメッセージを指定するパターン
$public.Logger.log("Logger Test", "Info Message");

引数は、以下の通り。ドキュメントには記載がないが、省いて実行してもエラーが出なかったので1も2も必須では無さそう。messageを省いてしまうとログの意味がないが。

  1. category (string): 出力するログをグループにまとめるキー情報らしい。現時点(2025/01/26) では特に使われていないように見える
  2. message (string) または error (Errorオブジェクト): ODC Portal/LogsでMessageとして出力される

オフラインでもAPIの実行は可能

ブラウザの開発者ツールを使い、ネットワークがない状態でAPIを実行してみた。
その後ネットワーク有りの状態に戻してしばらく待つと、自動的にv2/logsアドレスへの通信が発生した。オフライン時にAPIを実行すると、しばらくローカルに持っておき、復帰後に連携する仕組みのようだ。

ブラウザの機能でネットワークがない状態を作る機能は、Chromeの場合は以下の場所にある。
下の赤枠部分をOfflineにすると、ネットワークなしの状態をシミュレートできる。
スクリーンショット 2025-01-26 16.15.18.png

ODCのJavaScript API関係の過去記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?