いくつか方法がありそうです。
普通にレポートを使ってみる
ただし、管理者権限がないとうまく表示されないようです。
プラットフォームイベントのLogin Event Typeを取得する
ブラウザの情報は取得できそう。しかしデバイスは分からない
本番環境を見るとログがほとんどない。プレイグランドには多くある。
ログイン履歴のcsvファイル
- OSは取得できるが、デバイスまでは分からない。PCかモバイルデバイスかはOSで判定?しかしMacとiphoneの区別が分からない?
- ユーザーのログインがログイン履歴と監査証跡に記録されない (または消去される) 可能性はありますか
レポート
ユーザログインレポートを作成して、1 日にログインした一意のユーザーの総数を表示する
User Report: Login Date Displays as Blank
モバイル用のカスタムレポートタイプ
Salesforce for Android and iOS アプリケーションからモバイルログインを追跡する
元の質問 : 使用端末の確認レポート
CURLを使って実際にイベントログを取得する方法
Salesforce Reports and Dashboards REST API
1.接続アプリケーション(Manage Connected Apps)の作成。(Consumer KeyとConsumer Secretを後で使います)
ここをクリックしてclient_idとclient_secretを取得します。
2.「API の有効化」権限があることを確認する
3.API インテグレーション用の OAuth 設定の有効化
何か間違えたかな?
/services/data/v55.0/EventLogFile/describe
[{"errorCode":"NOT_FOUND","message":"The requested resource does not exist"}]
sobjects/が抜けてました。
/services/data/v55.0/sobjects/EventLogFile/describe
{"actionOverrides":[],"activateable":false,"associateEntityType":null,"associateParentEntity":null,"childRelationships":[],"compactLayoutable":false,"createable":false,"custom":false,"customSetting":false,"deepCloneable":false,"defaultImplementation":null,"deletable":false,"deprecatedAndHidden":false,"extendedBy":null,"extendsInterfaces":null,"feedEnabled":false,"fields":[{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":18,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":false,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":true,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":true,"inlineHelpText":null,"label":"Event Log Files ID","length":18,"mask":null,"maskType":null,"name":"Id","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],"
何かいっぱい情報が出てきました。
これをやっても何も出力されません。何をしているんだろう?
/services/data/v54.0/query?q=SELECT+Id+,+EventType+,+LogFile+
,+LogDate+,+LogFileLength+FROM+EventLogFile+WHERE+
LogDate+>+Yesterday+AND+EventType+=+'API'
よく見るとSOQLですよね。では、以下のSOQLを開発者コンソールで見てみると...
select Id,EventType,LogFile,LogDate,LogFileLength from EventLogFile
EventType='API'がないなぁ。 そりゃぁ何にも出てこなくて正解でしょう。
Loginのログだけを検索してみる
/services/data/v54.0/query?q=SELECT+Id+,+EventType+,+LogFile+
,+LogDate+,+LogFileLength+FROM+EventLogFile+WHERE+
EventType+=+'Login'
何度やってもこのエラーになる。意味が全くわかん。
\nEventLogFile WHERE EventType = Login0\n ^\nERROR at Row:1:Column:94\nBind variables only allowed in Apex code","errorCode":"MALFORMED_QUERY"
Idが分かれば次に進めるので、このアプローチは諦めます。
/services/data/v54.0/sobjects/EventLogFile/0AT1000000B8axRGAR/LogFile
これを実行すると
CSVファイルが取得できたようです。
"EVENT_TYPE","TIMESTAMP","REQUEST_ID","ORGANIZATION_ID","USER_ID","USER_TYPE","SESSION_TYPE","SESSION_LEVEL","BROWSER_TYPE","PLATFORM_TYPE","RESOLUTION_TYPE","APP_TYPE","CLIENT_VERSION","API_TYPE","API_VERSION","USER_INITIATED_LOGOUT","SESSION_KEY","LOGIN_KEY","TIMESTAMP_DERIVED","USER_ID_DERIVED","CLIENT_IP"
"Logout","20220628003826.574","4jmWpfQpAnFtpAHLZGpPe-","00D100000002dlL","005100000094yhd","標準(db=S,api=Standard)","UI","STANDARD(db=1,api=STANDARD)","Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36 Edg/103.0.1264.37","1015","9999","1000","9998.0","","","1","u/zGX0uDBtfE/vnF","a0cfu6NbxsXAnUbM","2022-06-28T00:38:26.574Z","005100000094yhdAAA","223.29.51.94"
"Logout","20220628064309.324","4jmpjPzcVyIhkzIdp8aX3-","00D100000002dlL","005100000094yhN","標準(db=S,api=Standard)","UI","STANDARD(db=1,api=STANDARD)","Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36","1015","9999","1000","9998.0","","","1","XKem2eAAkNnBaeO4","LqWjQ9vQxoMYq45M","2022-06-28T06:43:09.324Z","005100000094yhNAAQ","223.29.51.94"