Q&A

回答の並べ替え:
投稿新規に質問を投稿する

CELF RPAのログファイル(rpa-YYYYMMDD.log)の読み込み処理について

rider rider

2022-11-09 14:59

お世話になります。

RPAでエラーが発生したときに、エラー情報を管理者宛にメール送信したいと考えています。

下記URLにログファイルの参照方法が記載されているのですが、ログファイルからエラー情報を取り出す方法がよくわからず困っています。
https://cloud.celf.jp/celf-rpa-tips/docs/chapter07.html#_Toc4776963

【質問】
ログファイルを末尾から読み込んで、行頭が「202」で始まる行までを取り出すにはどのようなアクションセットを使えばよいのでしょうか。
 ※「データ操作」タブや「ファイル操作」タブには、テキストファイルを一行ずつ読み込むアクションが見当たりませんでした。
 ※「制御」タブにある「エラー情報をxxxに出力する」アクションで、エラー情報を取得しようと思いましたが、このアクションではエラー発生個所が記録されないので、ログファイルから取得したいと考えています。

よろしくお願いいたします。

新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
こんにちは。

お気遣い頂き、ありがとうございます。
ログを参照すること無く情報をつかめることが一番だと思いますので、
NCSさんのご回答内容がベストだと思います。

引き続き、CELFご活用をお願いいたします。
メールコンタクトをとる
rider rider
日本コンピュータシステム(CELFチーム)ご担当者様
新日本コンピュータマネジメント株式会社 ご担当者様

お世話になっております。

早々に詳しい回答をくださりありがとうございます。

どちらをベストアンサーにさせて頂くか迷いましたが、もともとの疑問点の
回答に加え、エラーの発生個所を素早く把握するコツをご教示くださった
日本コンピュータシステム(CELFチーム)様にさせていただきました。

とはいえ、新日本コンピュータマネジメント株式会社様の回答もわかりやすく
今後も役に立つ情報でした。深謝いたします。

いただいた回答をもとに開発を進めていこうと思います。

どうもありがとうございました。
日本コンピュータシステム(CELFチーム) 日本コンピュータシステム(CELFチーム) パートナー
メダルベストアンサー
追記

エラー箇所の速やかな特定を行いたい場合は
いくつかの予防策をアプリ内部で行い、その結果を
メールで送信するとよいと思います。
予防策を以下にいくつか例を記載します。

①RPAのアクションにコメントをつける。
  CELFのRPAアクションはコメントをつけると、「エラー情報をxxxに出力する」
  でエラー情報を出力するとRPAアクションにつけたコメントも出力されます。
  これにより、頻出するアクション(○○秒待機する)などでも
  コメントをつけることで、どこの箇所かすぐに判別ができます。
  
②エラー時に情報を付加するようにする。
  RPAのアクション実行前にセルに○○RPAアクション実行
  などをセットするようにして、RPAアクションを実行することで
  エラーになった場合は「エラー情報をxxxに出力する」で
  出力したセルの内容と実行前にセットしたセルの内容を
  結合しておくことで、エラーの特定を素早く行うことができます。

③アプリ画面をエクセルとして出力
  RPAでエラーが発生した際のアプリ画面をエクセルシートとして
  既定のパスに出力する。
  この際に、画面にエラー情報以外にこまめに実行している
  アクションセット名や実行フェーズなどをセルにセットしておくことで
  出力されたエクセルシートからどの段階でRPAエラーとなったかを
  判別できます。

④テーブルへの登録
  エラーが発生しても、続けて処理を行う場合はCELFでDBに
  エラーログ用のテーブルを作成してエラー内容を登録しておきます。
  
  これにより、1度の実行で複数のエラーが発生してもテーブルに
  蓄積されるためログファイルのようにエラーをさかのぼって
  調査することが可能です。

以上の4点になります。どれもアプリ自体にひと手間加える必要がありますが
エラー時の調査に役立つと思います。

アプリ内でハンドリングしたエラー情報でもエラー原因が分からない場合や
1からRPAの動きを丁寧にトレースする場合などはログファイルとアプリ内で
ハンドリングした情報で目星を付けてみてはいかがでしょうか。
メールコンタクトをとる
新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
こんにちは。

ログからの情報抽出という事であれば、シートに一度読み込んで末尾のアドレスを取得する方法があると思います。
イメージを添付します。
※CELFの最大行数の制約があるので、6.5万程度が限界となります。

イメージの内容としては、ログを読込みE3列に取り込む。
D列には、”2022”を探し出し、見つかった場合には、行数を返却する様にしております。
A6にて、D列の最大行数を取得し、A3にてE列に取り込んだデータ件数を取得する事で、
最後のログ出力1セットの範囲アドレスを、A9 に格納しております。

ご参考になればと思います。

よろしくお願いいたします。

メールコンタクトをとる
日本コンピュータシステム(CELFチーム) 日本コンピュータシステム(CELFチーム) パートナー
こんにちは。
ログファイルを1行ずつ読み込むアクションは分かりませんが、rpa-YYYYMMDD.logはテキスト形式ですので、CSVファイルに拡張子を変更し(ロボット利用可能が前提)、指定したセルに表示する方法は如何でしょうか。

①ロボット:ファイルまたはフォルダを~する
 作業フォルダ等にログファイルをコピーする。(拡張子をlogからcsvに変更)

②ファイル操作:CSVファイルのデータを~を起点にセットする。
 CELFにログをセットする。

③繰り返し処理で1行目から末尾までの間、セルを読み込み行頭を確認
 FIND関数等を利用し行頭を確認(=find("202",ログの行を上から確認,1))

上記のような流れでログは取得できると思うのですが、エラーの個所をメールしたいのであれば、私は画像にある通りメールやセル等に直接入力し対応しています。
(RPAがエラーになった際に「エラー情報をxxxに出力する」でエラー情報を取得しても記載して頂いている通り、アクションセットの何行目でエラーになったのか情報が無いので不便ですよね。)
メールコンタクトをとる