5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UiPathのログが増え続けないようにアーカイブする

Last updated at Posted at 2022-01-25

#はじめに
UiPath(StudioやRobot)を動かすと当然ログが残ります。このログはデフォルトの設定では一方的に溜まり続ける仕様のため、久々にログフォルダを見たらログが思っていたより多かったってこともあると思います。
log_before.png

気にする人は多くはないかもしれませんが、Unattended Robotで運用する場合やディスク容量の制限が厳しいVDI環境をお使いの方であれば、ログが肥大化しないように適切にアーカイブ(古いログを削除)したいところです。

#前提
UiPath(Studio/Robot) v2021.10.4 ※修正(バージョンが間違っていました)

#NLog
UiPathのロガーはNLogを使用していますので、NLogのConfigを直すだけでアーカイブできます。
NLogのConfigの仕様は以下です。
https://github.com/NLog/NLog/wiki/File-target#archival-options

#UiPathのログ
UiPathが出力するログはいくつか種類があるようです。
ざっとUiPathインストールフォルダを漁ってみたところ、NLogのConfigは以下のようです。
※v2019.10から比べると種類が増えている。。。でも、ファイル名にNLogと付くので分かりやすくなった

  • NLog.config
  • NLog.LicenseTool.config
  • NLog.UpdateService.config
  • Oidc.NLog.config
  • Robot.NLog.config
  • Studio.NLog.config

そのうち、修正しなくても良さそうなものを省くと以下のような感じです。

configファイル 説明
NLog.config ロボットを実行したときに吐くログ(Execution.log)
デフォルトの出力先は、C:\Users\XXXX\AppData\Local\UiPath\Logs
NLog.LicenseTool.config LicenseTool.exeを使ったときに吐くログ
Execution.logと同じ場所に出力される
NLog.UpdateService.config ???よく分かりません
他3つとは出力先が異なる
Studio.NLog.config Studioを起動したときなどに吐くログ
UiPath.Studio.Project.logやUiPath.Studio.Analyzer.logなど種類毎に複数出力される
Execution.logと同じ場所に出力される

Unattended Robotの場合は、NLog.configの修正だけで十分だと思います。Studioを使う方であれば、Studio.NLog.configも修正しても良いかもしれません。

#Configの修正
NLog.configを例に修正してみます。 ※読みやすいように改行しています
今回は日付単位にログファイルを作成し、古いファイルはArchiveフォルダに移動させ、最大5世代(5日分)保持する仕様とします。

修正する元の部分です。

NLog.config(修正前)
<target type="File"
  name="WorkflowLogFiles"
  fileName="${WorkflowLoggingDirectory}/${shortdate}_Execution.log"
  layout="${time} ${level} ${message}"
  keepFileOpen="true"
  openFileCacheTimeout="5"
  concurrentWrites="true"
  encoding="utf-8"
  writeBom="true"
/>

まずは、以下のプロパティを追加します。

  archiveFileName="${WorkflowLoggingDirectory}/archives/{#}_Execution.log"
  archiveNumbering="Date"
  archiveDateFormat="yyyyMMdd"
  archiveEvery="Day"
  maxArchiveFiles="5"

元々あるプロパティ「fileName」を修正します。
元々はExecution.logの前に日付が入る仕様でしたが、最も新しいログファイルの名前には日付が入らないようにします。

  fileName="${WorkflowLoggingDirectory}/Execution.log"

最終的に以下のようになります。

NLog.config(修正後)
<target type="File"
  name="WorkflowLogFiles"
  fileName="${WorkflowLoggingDirectory}/Execution.log"
  layout="${time} ${level} ${message}"
  keepFileOpen="true"
  openFileCacheTimeout="5"
  concurrentWrites="true"
  encoding="utf-8"
  writeBom="true"
  archiveFileName="${WorkflowLoggingDirectory}/archives/{#}_Execution.log"
  archiveNumbering="Date"
  archiveDateFormat="yyyyMMdd"
  archiveEvery="Day"
  maxArchiveFiles="5"
/>

Configの修正が終わったら、サービスマネージャからUiPathサービス(UiRobotSvc)を再起動します。
※StudioやタスクトレイのUiPath Assistantの再起動ではありません

#Config修正後
この通り、ログフォルダのログがすっきり整理されました。ログフォルダには最新日付のログのみが保存されています。
※archivesフォルダはログが吐かれるタイミングで自動で作成されます。
※なお、NLog.config以外のconfigも修正し、修正前までに溜まった古いログは手動削除しました。
log_after1.png

archivesフォルダには、過去5日分のログが日毎に残されています。ログが追加されると最も古いファイルが自動で削除されます。
※見やすいようにExecution.log以外は削除しています。
log_after2.png

#さいごに
簡単にログのアーカイブを実現できることが分かりました。
UiPathのバージョンが違うと修正するConfigのファイル名も違うので注意が必要です。
また、UiPathをバージョンアップするとConfigの内容にリセットされてしまうので、必要に応じてConfigをバックアップするなどしてください。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?