Postmanを使ってSalesforceのイベントログを確認する

REST API を使用して、イベント監視の BLOB データを取得できるので、Postmanを使えば簡単にSalesforceのイベントログが取得できるのではないかと考えています。これまでもApexからREST APIをコールアウトすれば可能だなぁって考えていたのですが、OAuth 2.0 の認証がなぁって気が進みませんでした... 

今回は認証は楽ですし、Postmanを使ってみたいと思います。

まずは、Salesforceのイベントログの情報を整理します。

# 処理の流れを確認します。

このヘルプを読んでいてなんとなく思いつきました。

[Salesforce プラットフォーム API バージョン 7.0 ～ 20.0 の廃止](https://help.salesforce.com/s/articleView?id=000380623&type=1)


次の手順に従って、Salesforce 組織からの SOAP および REST API アクティビティを報告するイベントログを確認できます。 

1. Salesforce CLIなどのツールを使用して、EventLogFileオブジェクトに対して SOQL クエリを実行すると、過去 24 時間に組織内で実行されたすべてのアクションのログが提供されます。

```
sfdx Force:data:soql:query -q "SELECT LogFile, EventType, CreatedDate FROM EventLogFile WHERE EventType IN ('API', 'RestApi', 'ApiTotalUsage')" -u <ユーザー名>
```

:::note
この部分は開発者コンソールでSOQLを流しても取得できますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3347540d-766c-9164-0b27-124c06d07d0f.png)

REST APIでQuery リソースを使用すれば可能なので、Postmanでも問題ないです。

[REST を使用してイベント監視データを照会する](https://developer.salesforce.com/docs/atlas.ja-jp.api_rest.meta/api_rest/dome_event_log_file_query.htm)

```
curl https://MyDomainName.my.salesforce.com/services/data/v59.0/query?q=SELECT+Id+,+EventType+,+LogFile+
,+LogDate+,+LogFileLength+FROM+EventLogFile+WHERE+
LogDate+>+Yesterday+AND+EventType+=+'API' -H "Authorization: Bearer token"
```


:::



2\. 結果ごとに、エンドポイントを使用して REST リクエストを実行してデータを取得し、.CSV ファイルにコピーします。

例: /services/data/v52.0/sobjects/EventLogFile/0AT3i000005vXpWGAU/LogFile

応答本文を Excel などのアプリケーションに貼り付けると、イベント ログ データを .CSV ファイルとして簡単に表示できます。


:::note

[レコードからイベント監視コンテンツを取得する](https://developer.salesforce.com/docs/atlas.ja-jp.api_rest.meta/api_rest/dome_event_log_file_blob.htm)

ログファイルのIdが分かれば以下のように取得できそうです


REST API を使用して、イベント監視の BLOB データを取得できます。次のような GET 要求を使用します。

```
curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/EventLogFile/0ATD000000000pyOAA/LogFile -H "Authorization: Bearer token"
```
バイナリで返ってくるのかな？

:::

# 実際にやってみます

+ [Salesforceを接続するときの手順はここです:既に１度つないだことがある場合](https://qiita.com/Keiji_otsubo/items/6f493f98422551a946c3)

1. EventLogFileオブジェクトに対して SOQL クエリを実行する

コレクションの中からRESTを展開して、Queryを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e917d648-bbce-a7e9-2cd3-1a8e9c075a01.png)

パラメータq の値として以下を設定します。

```
SELECT LogFile, EventType, CreatedDate FROM EventLogFile 
```

以下のように結果が返ってきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/889763b3-c3e7-29de-e561-ab72979ddddb.png)

LogFileのURLをクリックすると新しいタブが開きます。

Idの部分を:LogFileIdに変小すると、パラメータをセットできるようになります。
今回はRESTの下のｓObjectにLogFileという名前で保存しました。
保存してから、Sendボタンを押して送信します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/39c3b0c2-9991-1cf8-8836-a6b7ecadb3f2.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/dfdf6010-c055-5ff8-0ed7-007d312d28fd.png)

実行結果をみるとcsvファイルが返ってきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8825fa25-0db0-7f0e-02d0-f675ad7a7871.png)

csvファイルとして結果を保存できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9f10f313-608b-146d-caeb-a96c2f5c39bd.png)

おおお、簡単にイベントログを取得できます。

今までは開発者コンソールで検索してからcurlやphython、ブラウザの機能を使ってダウンロードすることしかなかったのですが、Postmanを使った方が簡単ですね。


[イベントログファイルのダウンロードと視覚化](https://trailhead.salesforce.com/ja/content/learn/modules/event_monitoring/event_monitoring_download)