WorldLogFileItemログファイルの保存先 - #3 by kin - Japanese (日本語) - Choreonoid Discourse

# WorldLogFileItemログファイルの保存先

Japanese (日本語)

kin
September 29, 2020, 8:31am

1

プロジェクトファイルで以下のようなWorldLogFileItemを設定している場合、

-
id: 500
name: "WorldLogFile"
plugin: Body
class: WorldLogFileItem
data:
filename: LOGFILE.log
timeStampSuffix: true
recordingFrameRate: 100

プロジェクトファイルを読み込むと、
ログファイルの保存先は「＜プロジェクトファイルのあるディレクトリ＞/LOGFILE.log」になりますが、
これを「＜Choreonoid を実行したディレクトリ＞/LOGFILE.log」にさせることは可能でしょうか？

＃ プロジェクトファイル内で使われる ${SHARE} の変数定義のように、
＃ カレントディレクトリを指すようなものがあるとよさそうにも考えたのですが、、、

よろしくお願いします。

nakaoka
September 29, 2020, 4:11pm

2

現状ではそのような（カレントディレクトリに対応する）変数のようなものはありません。

差し支えなければ、なぜそれが必要か理由を教えていただけるとうれしいです。そのような変数を用意するとしても、納得できる理由が無いとやりづらいところがありますので・・・。ご検討のほどよろしくお願いいたします。

kin
September 30, 2020, 5:46am

3

ご確認いただきありがとうございます。
そのような変数はない旨、承知しました。別の方法を検討します。

（一応、以下本件の経緯です）
複数のプロジェクトファイルを切り替えてChoreonoidを実行するのに、ランチャのようなものを使用しています。
プロジェクトファイルやモデルファイルなどはgitなどで管理して、そっくり差し替えたり更新することがあり、同じ領域にログファイルが置かれていると誤って消してしまうことがあります。
それを避けるため、ログファイルを別の場所（ランチャ内で切り替えたChoreonoidを実行する領域＝カレントディレクトリ）に保存できないものかと考えました。

ただ、ログファイルだけあっても意味がなく、ログファイルでシミュレーションを再現するにはログ取得時点のプロジェクトファイルやモデルファイルも必要なため、「ログの保存」という意味では、ログファイルのあるディレクトリ(…/project/)の数階層上(…/project/…/…/)などから一式を保存しておく必要がありますね。
そういう点では、今のプロジェクトファイルと同じパスにログファイルが保存されているのは適当なように思いました。

nakaoka
September 30, 2020, 7:48am

4

そのような用途でしたら、ユーザーが独自に定義する「パス変数」が使えるかもしれません。

詳細は以下で説明しています。
https://choreonoid.org/ja/manuals/latest/basics/config.html#basics-project-pathset

ログファイルはプロジェクトファイルとは別のディレクトリで管理するとして、そのディレクトリをパス変数として設定しておけば、その後ログファイルの場所をパス変数を起点とする相対的な場所で保存できます。

1 Like

kin
September 30, 2020, 8:44am

はい。こちらのドキュメントも参考にさせていただいていました。

ランチャ内で切り替えるChoreonoidを実行する領域（＝カレントディレクトリ）はプロジェクトファイルごとに分けているため、プロジェクトファイルの数だけパス変数も設定する必要がありそうですね。