[openrtm-users 01501] Re: OpenRTMのロガーについて

Ando Noriaki n-ando @ aist.go.jp
2010年 11月 16日 (火) 17:54:45 JST


二宮様

安藤です

> 開発者の皆様
>
> お世話になっております。富士ソフトの二宮です。
>
> 現在、開発したRTCのコアロジック部分で使用できるログの仕組みについて
> 調査をしており、できればRTMに用意されている仕組みを有効利用したく、
> RTC::Loggerまわりについて3点ほど質問をさせて下さい。
>
> 1.ログ出力のシリアライズについて
> doxygenを確認したところ、マルチスレッド書き込みに対してはシリアライズ
> してバッファリングする対応をされているようですが、マルチプロセス(※)に
> ついては何か対応をされていますでしょうか?
> ※rtc.confのlogger.file_nameに複数のRTCで同じファイルを指定した場合。

複数プロセスからの書き込みに対しては特に対処をしていません。
Loggerはstd::basic_ostreamを利用しており、複数プロセスからの
書き込みの場合その挙動に準じます。

> 2.ログ出力のオーバーヘッドについて
> バッファリングしたログをファイルに吐き出すタイミングはどのような仕組みで
> 行われているか、ご教授頂けますでしょうか?

coutなどと同様にstd::endlやstd::flushを呼び出したときに書きだされるように
なっていると思います。

> 3.日付・時刻のフォーマット指定について
> ソースを確認したところ、現在localtimeで時間を取得されているようで、
> 「秒」までの対応となっておりますが、「ミリ秒」まで出力する仕組みは
> 特にRTM内では用意されていないのでしょうか?

これは、私も欲しいと思っていたのですが、現在のところまだ実装されていません。

> なお、これについてはログにとどまらない話ですが、、、
> RTC開発者側で「時間計測」についてのコードを入れたことにより、
> そのRTCがOS依存になってしまうパターンと言うのが少なからず
> 存在していますので、ミドルウェア層で吸収できる手段があれば
> 展開いただければと思います。

時間計測については、coil::TimeMeasureを利用していただければと存じます。
詳細なドキュメントはないのですが、ヘッダとtest/TimeMeasure以下をご覧ください。

以上、よろしくお願いいたします。

-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



openrtm-users メーリングリストの案内