0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[OutSystems]Request_GetKeyでログの関連付けを見られる

Posted at

OutSystemsで出力するログには、1つのリクエストに紐づく一連のログに共通のキーがあることを最近知りました。
折角なので動作確認してみました。

OutSystemsのログについて概説

OutSystemsでは、デフォルトで様々なログを取得しています。
また、(System)モジュールのLogMessage Actionを使うことでAction Flowの任意の位置からログ出力を行うことも可能です。

出力されたログはService CenterのMonitoringタブで確認できます。
LogMessageで出力したログはMonitoringタブの下のGeneralタブです。
このログには、PlatformLogs ExtensionのEntityを経由してアクセスすることも可能です。

共通キー:Request_Key

ログ関連の要求事項としてよく聞くのが、1つのリクエストから発生する複数のログ同士を関連付けられるようにしたい、というもの。

例:ボタンをクリックしたら

  1. まず開始ログ
  2. 別のServer Actionを呼び出したのでそこで出力されるログ
  3. 復帰可能な例外が発生したのでログだけ記録して処理を継続
  4. 終了ログ

といったように、一回のリクエストに複数ログが発生する場合、各ログを紐付ける属性としてRequest_Keyというものがあります。
障害発生時の調査などで、必要な情報だけ抜き出すなどの目的に使えます。

実際のログで確認してみる

テスト実装

Traditional Webで以下のような簡単な処理を作って出力されるログを確認してみます。

image.png
LogMessageでGeneralに3回、またException Handlerで処理する例外が発生するのでErrorに1回、計4回のログが出る処理です。

ログ確認

Service CenterにはRequest_Key属性が表示されません。
各ログ検索画面の右上あたりに「Export to excel」というボタンがあるので、これでExcelを取得するとRequest_Keyも含めたログがあります。

画面リクエストログ(Traditional Web Requests Log)

image.png
ボタンクリックで出たログは一番上の行。
Request_Key列が出ていますね。この列の値が以降の各種ログにも出力されていて、紐付けが可能であるはず。

LogMessageで出力したログ(General Log)

image.png

3つのログにちゃんと同じRequest_Keyが出力されています。

例外ログ(Error Log)

エラーログの場合は、Excelにエクスポートする以外に、詳細画面でもRequest_Keyを確認できます。
image.png

Request_Keyを持っているログの種類

ログデータに関するレファレンスに、ログのデータベース上での列情報が載っています。

Request_Keyを持っているのは

  • Error
  • General
  • Screen
  • Integration (SOAPやRESTのログです)
  • Cyclic Job (Timer)
  • Extension
  • Mobile Request

ですね。
実際には、Errorおよび(または)Generalと他のテーブルを結合またはユニオンしてみることになるでしょう。

Log Entityを使ってみる

PlatformLogsから必要なEntityへの参照を追加します。
image.png

ちなみに、_Previousがついているのは前週のログ、ついていないのは当週のログです。

このEntityは普通にEntityとして検索できます。
(ただし、ログ用テーブルは書くことを重視しているため、直接検索されることは想定されていないそうです。負荷が高い検索をしたいなら、ログを別の場所に退避してそこで検索すべきとのこと)

3つのテーブルを画面で入力したRequest_Keyで検索して表示してみた例。
image.png

Action Flow中で任意にRequest_Keyを取得する

多分独自にログの仕組みを構築するためでしょうか。
PlatformRuntime ExtensionにRequest_GetKeyというActionが用意されています。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?