Using ishRemote, how can I get the DITA OT log file contents in a Get-IshEvent request?

I dropped my question in the wrong forum, so I'm trying again :(

I wrote this little PowerShell routine to get the log for a specific event. I can get the detail, but I cannot figure out how to get the contents of the DITA-OT log file. Can you help me?

I tried looking at IshEventData for the DITAOTLogFile event but the byte array is 0 in length.

$targetServer = "xxxxxx"

if($ishSession -eq $null) {
$ishSession = New-IshSession -WsBaseUrl $targetServer
}

$requestedMetadata = Set-IshRequestedMetadataField -IshSession $ishSession -Name "EVENTID" -Level "Progress" |
Set-IshRequestedMetadataField -IshSession $ishSession -Name "EVENTTYPE" -Level "Progress" |
Set-IshRequestedMetadataField -IshSession $ishSession -Name "EVENTDATATYPE" -Level "Detail" |
Set-IshRequestedMetadataField -IshSession $ishSession -Name "DETAILID" -Level "Detail"

$metadataFilter = Set-IshMetadataFilterField -IshSession $ishSession -Name "DESCRIPTION" -Level "Progress" -FilterOperator Like -Value "Publish process for GUID-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx=3=HTMLOutput=en-us"

$eventLog = Get-IshEvent -IshSession $ishSession -RequestedMetadata $requestedMetadata -EventTypes "PUBLISH" -MetadataFilter $metadataFilter

$eventLog
emoji
Parents
  • Just add the following code right after your $eventLog.

    $eventLog_dita = $eventLog | Where-Object {$_.action_detail_value -eq "DITA-OT logging"}
    
    # $eventLog_dita may contain serveral items. Here we take the first detail item $eventLog_dita[0] for example.
    $detail_id = $eventLog_dita[0].DetailRef
    
    $event_detail_raw = $ishSession.EventMonitor25.GetEventDetail($detail_id, "", $true)
    
    # parse the raw data to xml object
    $event_detail_xml = [xml]$event_detail_raw
    
    # query the cdata, then decode the DITA-OT log content
    $ditaOTLogStr = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($event_detail_xml.SelectSingleNode("//ishdata")."#cdata-section"))
    
    $ditaOTLogStr
    
    

    emoji
Reply
  • Just add the following code right after your $eventLog.

    $eventLog_dita = $eventLog | Where-Object {$_.action_detail_value -eq "DITA-OT logging"}
    
    # $eventLog_dita may contain serveral items. Here we take the first detail item $eventLog_dita[0] for example.
    $detail_id = $eventLog_dita[0].DetailRef
    
    $event_detail_raw = $ishSession.EventMonitor25.GetEventDetail($detail_id, "", $true)
    
    # parse the raw data to xml object
    $event_detail_xml = [xml]$event_detail_raw
    
    # query the cdata, then decode the DITA-OT log content
    $ditaOTLogStr = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($event_detail_xml.SelectSingleNode("//ishdata")."#cdata-section"))
    
    $ditaOTLogStr
    
    

    emoji
Children
No Data