このログには、ABBYY FlexiCapture のすべてのイベントとエラーが記録されます。たとえば、システム管理者のログイン/ログアウト イベントや、Application Server と処理ステーションの起動/停止などです。テナント内で発生したイベントは含まれません。
System Monitor からイベントログをダウンロードできるのは、システム管理者の権限を持つユーザーのみです。システム管理者は、デフォルトのテナントの管理者です。
このログをダウンロードするには、POSTリクエストを使用します:
POST https://<server address>/FlexiCapture12/Monitoring/Tenant/GetEventsCSV
すべてのパラメーターは必須です。正しく指定されていることを確認してください。
Oracle Database での検索では、大文字と小文字が区別されます。Oracle Database を使用する場合は、この点に注意してください。
| パラメーター | 型 | 説明 |
|---|
filter | string | ログのフィルター条件です。条件の組み合わせには、GeneralOperator パラメーターで指定する AND 演算子と OR 演算子のみを使用します。詳しくは、フィルター パラメーターの作成を参照してください。 |
columnsOrder | string | レポートに含める列のカンマ区切りリストです: ID, Date, EventType, Comment, UserFullName, Workstation, BatchId, BatchName, BatchTypeName, StageFromName, StageToName, ProjectName, RoleName, TenantName. |
sortColumnindex | int | ログ内のレコードの並べ替えに使用する列のインデックスです。 |
sortOrder | bool | 並べ替え順です: true は降順、false は昇順で並べ替えます。 |
tenantId | int | ログに含めるテナントを指定します: 使用可能なすべてのテナントは -1、デフォルトのテナントは 0、特定のテナント ID は 1 以上を指定します。 |
filter パラメーターには JSON オブジェクトを指定します。例:
{
"GeneralOperator": "AND",
"FilterItems": [
{
"PropertyKey": "Date",
"PropertyOperator": "BETWEEN",
"PropertyValues": [
"2022-09-12",
"00:00:00",
"2023-10-12",
"23:59:59"
]
}
]
}
PropertyKey パラメーターと PropertyOperator パラメーターの値を確認するには、管理および監視コンソールでフィルターを作成します。
ブラウザーのデベロッパー ツールを開く
ブラウザーのメニューで More tools → Developer tools をクリックし、Network タブを開きます。
コンソールでフィルターを作成する
管理および監視コンソールを起動し、System Monitor → Event log に移動して、
ボタンをクリックします。 フィルター条件を適用する
フィルター条件を指定し、Apply をクリックします。
フィルターパラメーターを確認する
GetFilteredEvents リクエストをクリックします。フィルタリング パラメーターは Payload タブに表示されます。
デフォルトのテナントのイベントをフィルターするには、TenantName ではなく TenantNameExt パラメーターを指定します。
"FilterItems": [
{
"PropertyKey": "TenantNameExt",
"PropertyOperator": "=",
"PropertyValues": ["Default tenant"]
}
]
columnsOrder Parameter では、デフォルトのテナントに TenantName をそのまま使用してください。
以下のPowerShellスクリプトは、このAPIを使用してイベントログをダウンロードする方法を示しています。
このスクリプト内のパラメーターは、ご利用のサーバー アドレスとご自身の認証情報に置き換えてください。
#------------------------------------------------------------------------------
# parameters
$server = "https://<server address>"
$user = "<user name>"
$password = "<password>"
# ログを保存するフォルダーへのパス
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Tenant_Events-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# ログパラメーター
$requestBody = @"
filter={
"Name": "Filter Name",
"GeneralOperator": "AND",
"FilterItems": [
{
"PropertyKey": "Date",
"PropertyOperator": "BETWEEN",
"PropertyValues": [
"2022-09-12",
"00:00:00",
"2023-10-12",
"23:59:59"
]
}
]
}
&columnsOrder=Id,Date,EventType,Comment,UserFullName,Workstation,BatchId,BatchName,BatchTypeName,StageFromName,StageToName,ProjectName,RoleName,TenantName,
&sortColumnindex=0
&sortOrder=true
&tenantId=0
"@
#------------------------------------------------------------------------------
$tenant = "" # デフォルトテナントのみ
$methodUri = "/Tenant/GetEventsCSV"
$authServer = $server
$ServerSitePath = "/FlexiCapture12/Monitoring"
function Write-Line($str, $color = "White")
{
Write-Host $str -ForegroundColor $color
}
function Join-Uri
{
param([Parameter(Mandatory, ValueFromPipeline)] [string]$parent, [string]$child)
if ($parent -eq "") {return $child;}
if ($child -eq ""){return $parent}
if ($parent.endswith("/") -or $parent.endswith("\\")) {$parent = $parent.substring(0,$parent.Length-1)}
if ($child.startswith("/") -or $child.startswith("\\")) {$child = $child.substring(1,$child.Length-1)}
return "$parent/$child"
}
function Get-AuthTicket($server, $user, $password, $tenant)
{
$tenantSuffix=""
if ($tenant -ne ''){ $tenantSuffix = "?tenant=$tenant"}
$URL = Join-Uri $authServer "/FlexiCapture12/Server/FCAuth/API/Soap$tenantSuffix"
$SOAPRequest = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><FindUser xmlns="urn:http://www.abbyy.com/FlexiCapture"><userLogin>user</userLogin></FindUser></soap:Body></soap:Envelope>'
$Headers = @{
'SOAPAction' = '"#FindUser"'
'Content-Type' = 'text/xml; charset=utf-8'
'Authorization' = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$($user):$($password)")))"
}
try
{
$response1 = Invoke-WebRequest -Uri $URL -Headers $Headers -Body $SOAPRequest -Method 'POST'
return $response1.Headers['AuthTicket']
}
catch{
Write-Line -str "Couldn't get 'AuthTicket': $_" -color "Red"
return ""
}
}
function Download-CSVReport($server, $tenant, $authTicket, $methodUri, $requestBody, $folder, $reportFileName)
{
$reportFullFilePath = Join-Path $folder $reportFileName
#フォルダーをサイレントに作成(存在しない場合)
New-Item -ItemType Directory -Force -Path $folder | Out-Null
if ($authTicket -eq "" -or $authTicket -eq $null)
{
Write-Line -str "Couldn't get 'CSV-Report'" -color "Red"
}
else
{
$header = @{ "Accept" = "*/*"}
$session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
$session.Cookies.Add($server, [System.NET.Cookie]::new('FlexiCaptureTmpPrn', "Ticket=$authTicket"))
$tenantInUrl=""
if ($tenant -ne '') { $tenantInUrl = "/$tenant"}
$uri = Join-Uri $server $ServerSitePath | Join-Uri -child $tenantInUrl | Join-Uri -child $methodUri
try{
$response = Invoke-WebRequest -Uri $uri -Method 'POST' -Headers $header -WebSession $session -Body $requestBody -OutFile $reportFullFilePath -MaximumRedirection 0 -ErrorAction Ignore -PassThru
if ($response.StatusCode -lt 300)
{
Write-Line "CSV-Report done: $reportFullFilePath" "Green"
}
else
{
Write-Line -str "HttpStatus $($response.StatusCode) in getting CSV-Report." -color "Red"
}
}
catch{
Write-Line -str "Couldn't get CSV-Report: $_" -color "Red"
return ""
}
}
}
$authTicket = Get-AuthTicket -server $server -user $user -password $password -tenant $tenant
Download-CSVReport -server $server -tenant $tenant -authTicket $authTicket -methodUri $methodUri -requestBody $requestBody -folder $folder -reportFileName $reportFileName