RecordMapでのエラー情報の取得について。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
InteroperabilityのRecordMapの仕組みを利用した、ファイル取り込みについて、
取り込み時のエラー内容を独自のログ出力グローバルに吐き出したいと考えております。
管理ポータル上だと以下のように表示されている内容を
文字列として取得したいだけなのですが、何か方法はありませんでしょうか?
.png)
Ent_Util.Logの中を見ると上記の内容は確認できたのですが、
わざわざシステムが吐いているログを見なくとも、
ビジネス・サービスの結果として取得できる情報があるのでは?と考えております。
Comments
Ohataさん
こんにちは。
頂いたエラーが出力されているTestAsou2というビジネスサービスはEnsLib.RecordMap.Service.FileServiceクラスを利用されているのではないかと思います。
であれば、アラート出力を利用する方が良いかと思います。
まず、以下のようにEns.AlertRequestメッセージを受信するビジネスオペレーションクラスを作成します。
/// アラートデータの保存
Class Util.Alert.StoreAlert Extends Ens.BusinessOperation [ Language = objectscript ]
{
Parameter INVOCATION = "Queue";
Parameter SETTINGS = "-AlertOnError";
Method StoreError(pRequest As Ens.AlertRequest, Output pResponse As Ens.Response) As %Status
{
set ^Log($I(^Log))=$lb(pRequest.AlertText,pRequest.AlertTime
,pRequest.SourceConfigName,pRequest.SessionId)
return $$$OK
}
XData MessageMap
{
<MapItems>
<MapItem MessageType="Ens.AlertRequest">
<Method>StoreError</Method>
</MapItem>
</MapItems>
}
}作成したビジネスオペレーションを追加します。この時、オペレーションクラスには先ほど作成したクラス名、
オペレーション名には「Ens.Alert」を指定します。
最後にエラーを受信したいビジネスホストの設定タブにある「エラー時に警告」にチェックを入れます。
こうすると、各ビジネスホストでエラーが発生すると、Ens.AlertにEns.AlertRequestメッセージが流れ、
^Logグローバルにエラーメッセージ(AlertTextプロパティ)や発生元のビジネスホスト(SourceConfigNameプロパティ)が格納されます。
ラフな説明ですみません。
ご不明な点等ありましたら、ご連絡ください。
Minamoto さん
ご回答いただきありがとうございます!
Ens.Alert機能自体あまり利用したことがなかったため、
確認に時間がかかっているところとなります。
RecordMap読み込みにおいてはParseOnlyをTrueにしてるのですが、
この時にアラートが飛んできていないような気がしていて、その点の確認中です。
解消しましたら改めてご連絡させて頂きます!
Minamoto さん
Alertでログが取れそうなことが確認できました!ありがとうございます。
ただ、ParseOnlyをTrueにするとVer 2020.1ではやはり通知が来ていなさそうなので、
別途サポートに問い合わせるようにします。
Ohataさん
ご連絡ありがとうございます。
ちなみに私の手元のIRIS 2020.3で試してみましたところ、アラートメッセージが送られました。
お手数ですが、サポートセンターに問い合わせて頂ければと思います。