概要や前提
Automation Anywhere A360 (旧A2019)の、クライアント端末(Bot Agent)のログ出力設定や、保存方法について記載します。特に保存方法、あんまり誰も教えてくれないので。
製品名が長いので、この記事では以後、「A360」とだけ書きます。
Automation Anywhere 11シリーズの話ではないので、そちらを使ってる人は、混乱しないよう、まわれ右でお願いします。
A360のクライアント側ログについて
特に設定の変更とかしていなければ、C:\ProgramData\AutomationAnywhere\BotRunner\Logs
にログファイルは保存されています。
C:\ProgramData
は隠しフォルダなので、エクスプローラの設定で表示するよう変えときましょう。
フォルダの中は、下の3つは、ほぼ必ずあります。
- 過去のログをzipにしたフォルダ(日本語環境だと、
2022-5月
みたいなフォルダ名になっていると思います) Bot_Launcher.log
Node_Manager.log
他に、利用状況によって、ブラウザ拡張関連のログの、
AAChromeBotBrowserAgent.log
AAEdgeBotBrowserAgent.log
AAFirefoxBotBrowserAgent.log
Bot起動にトリガーを使う時の、トリガー待機の記録になる、
TriggerListener.log
があります。
Node_Manager-(数字).json
もありますが、これはログの一時ファイルみたいなものらしく、それの中身をいちいち見ることはない、と思います。そもそも詳細な仕様が不明です。
ログの種類
上にログの一覧を書きました。ここで用途の説明が必要なのは、Node_ManagerとBot_Launcherでしょう。
ざっくりとですが、用途は、以下のような区別になります。
ログファイル | 用途 |
---|---|
Node_Manager.log | Control Roomとの通信状況、Botの開始と終了など |
Bot_Launcher.log | Bot自体の実行ログ(どんな処理をしたか、など) |
Botを開発するときに、うまく動かないでログを見るなら、Bot_Launcher.logを見ると有意義なことが多いです。
逆に、スケジュール起動がうまくいかない、みたいなケースだったら、Node_Manager.logを見ると、何か出ているかもしれません。(何も出ていなければ、それはそれで、Control Room側の問題の可能性が高いね?って言えます)
ログが必要となるケース
ログが必要になるのは、大別して、2つのケースが考えられます。
- Botの運用や実行でトラブルが起きて、原因や詳細を調査するために遡る
- Botの開発途中で、意図した動きをしないので、原因を調査するためにログを見る
有償版を使っていて、Technical SupportやProfessional Serviceのお世話になる場合も、「ログ取ってください」と言われることは多いです。特に 1. のケース。
A360は設計思想とか性質上、あまりユーザーが2.のパターンでログを見ることを想定していないのかな?というフシもあるのですが、Bot開発を煮詰めてくると、意外と役に立つので、ログに目を通す方法は知っておいて損はないです。
ログの出力レベル(概要)
変更方法は後述しますが、ログには「出力レベル」という概念があります。
出力レベルの設定によって、「エラーの通知しか記録しない」「一般的な情報までは記録する」「めっちゃ細かいことも保存する」のような、ログに出す要素を設定できます。
細かい情報まで出力することの、メリットとデメリットを記載します。
- メリット
- 何かトラブルがあった際、原因究明が容易になる
- デメリット
- PCの処理リソース(CPUやI/O)をログに割かれる分、実行が遅くなる(影響度合いはcase by case)
- ストレージ(記録容量)を圧迫する
- 細かく出し過ぎると、逆に重要な情報を探す際に邪魔になる
と、一見、デメリットのほうが多く見えちゃったりします。なので「全部出しておけばいいや」はあまり正しくなくて、必要な時に必要なモノを出すことが望ましいです。
ログ出力レベルの変更や、設定の種類については後述しますので、あくまで「出力レベルという概念があって、設定によってログに出てくる細かさが違う」ということだけ、ここでは頭にいれて先に進んでください。
ログを保存・確認するには
ここから先、具体的な手順を書きます。
止まるんじゃねえぞ、じゃなくて止めろ
この記事のキモの部分になるのですが、A360のクライアント側のログは、普通、クライアントで動いているサービス(Automation Anywhere Bot Agentサービス)のプロセスによって「使用中」状態になっています。
なので、そのままでは正常に開くことすらままならないのです。ではどうすれば良いのかというと、ログを保存する時や、確認する前段階として、いったんサービス(Bot Agent)を止める必要があります。
前提条件
だいたいの場合、Windows 10を使用していると思うので、その前提で書きます。Windows 11でもさほど変わらないはずです。
あと、ローカルPCの管理者権限が必須です。
実のところ、下に記載している止め方は一例で、タスクマネージャーの「サービス」タブから止める、とかでも全然OKです。やりやすい方法でやっちゃいましょう。
Bot Agentサービスの止め方
- スタートボタンを右クリックして、
Windows PowerShell (管理者)
を開きます。 - (ユーザーアカウント制御のダイアログが表示されたら) 「はい」を押します
-
net stop "Automation Anywhere Bot Agent"
と入力してEnterします(コピペOK) -
Automation Anywhere Bot Agent サービスは正常に停止されました。
と表示されたら完了です。
Bot Agentサービスの再開
詳細は後述しますが、サービスを止めたら、再開する必要もあります。再開しないとBot Agentが動かない、つまりA360のクライアント側での機能が使えなくなります。
再開手順は、
- スタートボタンを右クリックして、
Windows PowerShell (管理者)
を開きます。 - (ユーザーアカウント制御のダイアログが表示されたら) 「はい」を押します
-
net start "Automation Anywhere Bot Agent"
と入力してEnterします(コピペOK) -
Automation Anywhere Bot Agent サービスは正常に開始されました。
と表示されたら完了です。
サービスを止めた後、PowerShellウィンドウを開きっぱなしにしておけば、上記 3. からで再開できます。簡単ですね。
net stop で止めて、net start で再開。わかりやすいです。
ログ保存を含めた、具体的な作業手順
サービスの止め方・再開方法を把握したところで、具体的な作業方法を記載します。
Case.1 障害が起きたのでログを保存しておきたい
- Bot Agentのサービスを止めます
- ログの保存先にあるファイル・フォルダを、全部、別のフォルダにコピーします(移動でも可)
- Bot Agentのサービスを再開します
- 手順 2.で保存したログを確認したり、詳しい人に見てもらいます
Case.2a 開発中のBotがうまく動かない
- Bot Agentのサービスを止めます
- ログの保存先にあるファイル・フォルダを、全部、別のフォルダに移動します。
- Bot Agentのサービスを再開します
- 開発中のBotをControl Roomから実行します
- 実行が終わった(あるいはエラーで終了した)ら、再度、Bot Agentのサービスを止めます
- ログの保存先にあるファイルやフォルダ(実行中に出力されたログ)を、手順2.とは別のフォルダに移動またはコピーします。
- Bot Agentのサービスを再開します
- 手順6.で保存したログを確認したり、詳しい人に見てもらいます
上記の、手順 2. での保存は、いわばログフォルダの初期化(手順4.で実行したログに限定する)ためなので、開発にしか使わない端末等で、過去のログが不要というなら、削除でも良いのですが。
とはいえ、消してしまったモノは戻せないので、念のため保存しておくことを強くお勧めします。
Case.2b 開発中のBotがうまく動かない(詳細なログを取るver.)
- Bot Agentのサービスを止めます
- ログの保存先にあるファイル・フォルダを、全部、別のフォルダに移動します。
- ログの出力レベルが詳細な出力になるように変更します(設定方法は後述です)
- Bot Agentのサービスを再開します
- 開発中のBotをControl Roomから実行します
- 実行が終わった(あるいはエラーで終了した)ら、再度、Bot Agentのサービスを止めます
- ログの保存先にあるファイルやフォルダ(実行中に出力されたログ)を、手順2.とは別のフォルダに移動またはコピーします。
- ログの出力レベルを元に戻します(設定方法は後述ですよー)
- Bot Agentのサービスを再開します
- 手順7.で保存したログを確認したり、詳しい人に見てもらいます
手順が長くなってますが、要は
- Bot Agentを止めないとログの移動やコピーは正常にできない
- 関係ない時間帯の情報が含まれないほうがログは確認しやすい
という条件をクリアするためなので、あまり深く考えず、ポチポチやっちゃってください。
Case.3 障害がたまに起きるので、ログの出力レベルを変更しておくよう言われた
- Bot Agentのサービスを止めます
- ログの出力レベルが詳細な出力になるように変更します(設定方法は後述です)
- Bot Agentのサービスを再開します
これで問題事象が確認されたら、Case.1の手順で保存すればOKです。
ログの出力レベルについて
ここまでの文章で何カ所か触れた、出力レベルの話です。
A360のBot Agentログは、6つのカテゴリー(レベル)があります。
- FATAL 致命的なナニカがあった時に出力されます。
- ERROR 実行が止まった等、重大なエラーで出力されます。
- WARN 実行は継続できるけど、マズいことがあった時に出力されます。
- INFO 一般的な情報です。Botの実行を開始しました、終了しました、等。
- DEBUG Bot Agentの内部動作など、デバッグ用の情報です。Botが問題なく動いているときは不要な情報です。
- TRACE 各パッケージの内部動作に関する情報など、めっちゃ細かく逐一出力されます。
さて、Bot Agentをインストールした後の初期設定では、「INFO以上を出力」になっています。
ですが、用途や状況によっては「DEBUGもほしい」とか「TRACEが必要」なんてことがあります。
Bot開発中のエラーを開発者がチェックするなら、INFOだとちょっと情報不足で、DEBUGを出せば事足りるように思えます。
他方で、障害が起きたときの再現調査や、挙動不審な時の確認などは、TRACEも取ってください、って言われたりします。なので設定値は「どれが正しい」ではなく、用途や状況によって切り替えると良いはずです。
一般論として、たとえば「FATALとINFOは取るけど、WARNとERRORはいらない」なんてことはありません。WARNやERRORより重要なINFOって普通は考えられないからです。
ですので、ログの出力の設定は、「INFO以上」とか「DEBUG以上」といった指定になります。出力する重要度の最低ラインを設定する、と考えるとわかりやすいでしょう。
ログの出力レベルを設定する
さて、A360のログ運用で気をつけないといけないのは、Node_ManagerとBot_LauncherとTriggerListenerそれぞれに出力設定があることです。BrowserAgent系は設定、見当たらないですね。そもそもユーザーが見る・調節するものじゃないのでしょう。 設定があったので追記しました。
Botの開発時に、個人的にデバッグする、というだけなら、Bot_LauncherのログだけDEBUG出力にすれば良いです。しかし、障害発生時の調査などでは、少なくともNode_ManagerとBot_Launcher、トリガーを使用しているならTriggerListenerもあわせて設定する必要があります。
具体的な作業手順のところにも書きましたが、Bot Agentサービスを停止してから設定は変更しましょう。
ログ出力レベルの設定を行うときは、設定ファイルのバックアップを取ることを強く推奨します。設定ファイルが壊れてBot Agentの再インストール、とかなっても時間が無駄になるので。
Node_Manager.logの設定
C:\Program Files\Automation Anywhere\Bot Agent\config
にある、nodemanager-logging.xml
を、メモ帳などで編集します。
終わりのほう(標準だと43行目あたり)にある、
<Root level="INFO">
の、level="INFO"
をlevel="DEBUG"
とかlevel="TRACE"
にすればOKです。
Bot_Launcher.logの設定
C:\Program Files\Automation Anywhere\Bot Agent\config
にある、botlauncher-logging.xml
を、メモ帳などで編集します。
終わりのほう(標準だと28行目あたり)にある、
<Root level="INFO">
の、level="INFO"
をlevel="DEBUG"
とかlevel="TRACE"
にすればOKです。
TriggerListener.logの設定
C:\Program Files\Automation Anywhere\Bot Agent\config
にある、triggerlistener-logging.xml
を、メモ帳などで編集します。
終わりのほう(標準だと24行目あたり)にある、
<Root level="INFO">
の、level="INFO"
をlevel="DEBUG"
とかlevel="TRACE"
にすればOKです。
BrowserAgentの設定
C:\Program Files\Automation Anywhere\Bot Agent\AABrowserAgent
にあるBrowserAgent-log4net.config
をメモ帳などで編集します。管理者権限で開いたエディタでないと編集できないので注意が必要です。
設定はChrome、Firefox、Edge全部に共通です。特定のブラウザだけ、という設定はできないようです。
上のほう(4行目あたり)にある、
<level value="INFO" />
の、value="INFO"
を、value="DEBUG"
とかにすればOKです。他の設定ファイルと属性名が違いますが、設定する値の考え方は同じですね。
余談
ここは私の独自研究なので、間違ってる可能性があります。厳密なログ1行ずつの比較検証まではしてないので、違ってたらごめんなさい。
ところで、上記3つのログ設定ファイルには、
<Logger level="INFO" name="com.automationanywhere"/>
という行も含まれています。これは公式ドキュメント にも修正するようには指示されていないです。
ここは変更不要なの?という気になったので、ちょっと検証してみました。
結論から書くと、少なくとも、A360.24R2かつBot Agentバージョン21.200では、少なくともDEBUGやTRACEを取得する範囲では、特に影響がないようです。
もうちょっと詳しく書くと、この設定はA360製品内部のcom.automationanywhere
というJavaクラス(および、その子クラス)から出力されるログ情報をINFOに固定する、という内容です。ですが、DEBUGやTRACEは別のクラス経由で出力されているようで、実質、効果がない・・・と言えるでしょう。
逆に、ログ出力レベルをWARN
とかERROR
とかに設定しても、上記で上書きされるので、一部の情報はINFOレベルであっても出力されます。されるみたいです。
すなわち、上記の設定は「ログを詳細に出すかどうか」という視点であれば、とりあえず無視できる、と考えて良さそうです。というのが個人的な見解ではありますが、不安だったら、たとえばTRACEレベルのログがほしいのなら、上記の行もlevel="TRACE"
とかに書き換えちゃうほうが無難かもしれません。
INFOレベルでもログ容量を圧迫するから、それより重要度の高いログしか出したくない、みたいなケースだと影響するかもしれませんが。
その場合、そんな運用環境では、小手先でログレベルを弄ったところで、そう遠くない将来に運用が破綻するので、とっととSSDを交換する等で、ストレージ容量を確保すべきです。
まとめ
- Bot Agentのログを取るときはサービスを止めてから
- ログファイルは複数の種類(ファイル)にわかれてます
- ログ出力設定もファイルごとにわかれてます
それでは、楽しいRPAライフを!