
【WinActor】ログ出力の使い方&活用方法(後編)
今回はWinActorのログ機能の活用法についての後編です。
前編は主にログ出力タブ画面の使い方のお話でした。
今回の後編では、ログ出力タブ画面以外の他の様々な設定方法や活用方法をお伝えしたいと思います!
1.実行ログをファイル出力
前編でお話した「ログ出力タブ画面」に表示されるログは、WinActorを終了すると削除されてしまうこと、表示できる行数に上限が設けられていることから、後になって以前の実行ログを確認することが難しいのです。
ではログを残しておきたい場合はどうするか?
ファイルに出力しておきましょう!
ファイルに出力する方法として
1)シナリオ内にノードを配置して必要なシナリオのみ出力する
2)WinActorのオプションで設定し全てのシナリオをファイル出力対象とする
2通りがありますので順に説明していきます。
1)シナリオ内にノードを配置
使用するのは「ログ出力(ファイル指定)」です。
※ライブラリ▸01_WinActor制御▸08_実行ログ
このノードはファイルパスを指定することで、このノード以降の実行ログを指定のファイルへ書き出しすことができます。

このノードが書き出し先のファイルの作成をしログの記録、保存までしてくれますのでファイルを予め用意しておく必要はありません。
なお指定したファイルが既に存在する場合は追記されますので、実行ごとにファイルを分けたい場合はファイル名に日付などを付けて同一のファイルが存在しないように設定するか、既存のファイルを削除や移動させてから実行するようにしてください。
複数のシナリオのログファイルを同じフォルダに保存していく場合は、業務名(シナリオ名)が分かるように、ファイル名に業務内容を含めておくと管理がしやすくなります。

ログの出力対象は「このライブラリ以降のノード」になるため、シナリオの序盤へ配置していただくのがおすすめです。

2)WinActorのオプションで設定
WinActorのオプションにもログに関する設定項目があります。オプションで設定をすると個別のシナリオへの設定やノードの配置は不要で、全てのシナリオの実行ログを残していくことが可能になります。
ツールメニューからオプション画面▸ログタブでおこないます。

「実行ログを常に出力する」にチェックを入れてから他の項目を設定していきます。各項目の設定については下記の通りです。

オプションで設定すれば、各シナリオへ個別の設定をしなくても実行ログを出力することができますが、ファイル名や出力場所を個別で設定することはできません。例えば業務ごとにフォルダを分けていて、ログの保存先もそれに準じるかたちで運用したい場合は、1)でご紹介したノードを使う方がよさそうです。
2.ログ関連のノードご紹介
ログに関するノードを2つご紹介します。業務内容や業務手順などから都度適したものを選んで使っていきたいですね。
1)ログメッセージ出力
※ライブラリ▸01_WinActor制御▸08_実行ログ
指定のメッセージを実行ログに書き出します。
例として、繰り返しの処理をするシナリオで「ここから○○の処理が始まる」といったメッセージを書き出すという使い方があります。
繰り返し処理では同じノードを何回も実行することになるため、ログからエラー箇所を発見してもこの行がどのデータの処理しているのか(繰り返しの何回目なのか)がぱっと見だと分かりにくいですが、メッセージを書き出しておくと目印になるので特定しやすくなります。
書き出したメッセージは「ログ出力タブ画面」にも表示されますしファイル出力されたログにも書き込まれます。

2)ログ記録
※ライブラリ▸13_ファイル関連▸01_テキストファイル操作
指定したファイルに書き込みをおこなうことができます。
これは実行ログとは別ファイルに記録をしたい場合などに使います。こちらも繰り返し作業のときに、処理件数や処理結果のみ別ファイルへ記録していくといったときに使うことができます。

3.こんなときどうする?
続いては、ログに関してこんなときはどうする?を考えてみたいと思います。
1)エラー対策としてログを活用したい
エラー対策としてログは大いに活用できる機能です。実行ログについては前編からここまで様々な出力方法をお伝えしてきましたが、実行ログ以外のログを取得・保存することもできますのでこちらも押さえておきましょう!
①エラー情報収集
※ライブラリ▸02_エラー処理
エラーを発したノードについての「ノード名」「ノードID」「エラーメッセージ」を取得することができます。
取得したエラー情報は、テキストファイルに出力する、Excel台帳に処理結果として記録しておく、メールの本文に貼り付けて担当者宛に通知を送る、といったことに使うことができます。

これらのエラー情報は後から見返して、不具合を修正するときにとても役立ちます。
②デバッグ:変数値保存
※ライブラリ▸07_デバッグ
このノードを通った時点での変数の現在値の値を指定のファイルへ出力することができます。変数値からエラーの真の要因が判明することもありますので①エラー情報収集と併せて使用するのも良いでしょう。

💡デバッグ関連のノード
「変数値保存」の他にもデバッグ関連では、ウィンドウ状態やウィンドウ識別の情報を表示したり保存できるノードがあります。
「ウィンドウ状態」「ウィンドウ状態保存」では、画面の一覧とそのウィンドウタイトルとプロセス名とウィンドウサイズを取得します。
「ウィンドウ識別」「ウィンドウ識別保存」はウィンドウ識別の情報を取得することができます。
2)古いログファイルを自動で削除したい
シナリオ実行毎にファイルを出力していくと、実行の頻度にもよりますがファイルがどんどん溜まっていく一方ですよね。
手作業でファイルを削除したり他のフォルダへ移動しても良いのですが、ルールを決めてシナリオ内で実行させることもできます。
①日にちで区切って古いファイルを削除
(「ファイル操作(n日前までに更新されたファイルの削除)」を使用)
※002_スイートライブラリ▸13_ファイル関連
こちらで見つからない場合は検索パレットからも検索可能です。
対象のフォルダから指定の日数以前のファイルを削除することができます。例えば「実行ログ」フォルダ内の30日より以前のファイルを削除したい場合はこのように設定します。

②ファイル数で区切って古いファイルを削除
ファイル数に上限を設けて、超えた分を削除するパターンも考えてみましょう。こちらは専用のノードがないので、複数のノードを組み合わせて作成できます。

指定のフォルダ内のファイル数を取得し、上限数を超えていれば作成日時が古いファイルのパスを取得して削除するという流れです。

「古いファイルを削除する」というのはログに限らず、使用することができます。個別のシナリオ内に一工程として組み込んでも良いですし、単独のシナリオとして用意しておき、「シナリオファイル呼び出し」で呼び出して使用するといった使い方もありますね。
ある程度の期間保管しておき、見返す機会がなくなったら削除するようにするとフォルダの容量を軽くすることもできますので、ぜひ取り入れてみてください。
さて2回に渡ってお話してきたログについて、いかがでしたでしょうか。
シナリオ開発において必須ではないものの上手に取り入れることで運用面で大きな助けになること間違いなしです。ぜひ積極的に使ってみてください🎵
最後までお読みいただきありがとうございました。
また次回お楽しみに!
▼WinActorのご相談はこちらから
▼ワークスアイディのRPA研修や開発、運用サポートの詳細はこちら
