Execution.logファイルについて

いつもお世話になっております。

1つ質問なのですが、ReadTextFileアクティビティで最新日付の[YYYY-MM-DD_Execution.log]を読み込みたいのですがどうしても「 別のプロセスで使用されているため、プロセスはファイル~にアクセスできません。」と言われ読み込みができません。

エラーの原因と対処方法が知りたいです。
私としては、最新の実行時間がわかればいいのですが、、、、

UiPathの実行ログを保存しているファイルですよね。こちらはRobotを実行する際にUiPathが利用しているものとなるために当該エラーが出ていると思われます。

解決策ですが、下記2点が有効ではないかと思います。

  • 上記以外の方法で最新の実行時間を管理する
  • ファイルをいちどコピーし、コピーした先のファイルを読み込む

返信ありがとうございます。

やっぱりそうですか、、古い日付だと問題なく実行できるのでそんな気がしてました、、、
解決策までありがとうございます。コピーの方を試してみたいと思います

何度もすみません。。。
ファイルのコピーなのですが、実行日が変わったらCopyFileアクティビティのPathも変えてやらないといけないと思いますが、これを自動で変える方法ってございますか?

"YYYY-MM-DD"のところですね。これは、 Now.ToString("yyyy-MM-dd")で表すことが出来るので、この数式と固定の文字列を組み合わせてファイル名とする方法が取れるかと思います。
ただしこの場合、取得したい実行日が当日であることが前提になるので、「当日ではないけど最新のもの」を指定したい場合は少しアプローチが変わります(すぐに回答が浮かばないのですが、正規表現とか使うイメージがあります)。

1 Like

こんにちは

ファイル名が固定長なので、*Execution.logファイル一覧を取得して、単純ソートで大丈夫なはずです。

targetFile = System.IO.Directory.GetFiles(System.IO.Path.Combine(System.Environment.GetEnvironmentVariable("LOCALAPPDATA"),"UiPath\Logs"),"*Execution.log").OrderByDescending(function(x) x).First()
2 Likes

何度もありがとうございます!
参考にさせていただきます。

1 Like

私も以前に「現在実行中のログを読み込み」たくて、同じエラーぶつかりましたが、
下記のように、InvokeCodeで「FileStream+参照読み込みオプション指定」でエラーを回避しました。

Using fs As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
    Using sr As StreamReader =New StreamReader(fs, System.Text.Encoding.GetEncoding("Utf-8"))
        Do While sr.Peek() >= 0

ちなみに下記のコンポーネントで該当のコードを書いてありますので
(当日のログも読み込めるようになっています)
なにかの参考になれば幸いです。

1 Like