[openrtm-users 01500] OpenRTMのロガーについて

3 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 5時間 34分 前
登録日: 2009-06-23 14:31
[openrtm-users 01500] OpenRTMのロガーについて

開発者の皆様

お世話になっております。富士ソフトの二宮です。

現在、開発したRTCのコアロジック部分で使用できるログの仕組みについて
調査をしており、できればRTMに用意されている仕組みを有効利用したく、
RTC::Loggerまわりについて3点ほど質問をさせて下さい。

1.ログ出力のシリアライズについて
 doxygenを確認したところ、マルチスレッド書き込みに対してはシリアライズ
 してバッファリングする対応をされているようですが、マルチプロセス(※)に
 ついては何か対応をされていますでしょうか?
 ※rtc.confのlogger.file_nameに複数のRTCで同じファイルを指定した場合。

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

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

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

以上、ご確認の程宜しくお願いいたします。

未定義
root
オフライン
Last seen: 5時間 34分 前
登録日: 2009-06-23 14:31
[openrtm-users 01501] OpenRTMのロガーについて

二宮様

安藤です

> 開発者の皆様
>
> お世話になっております。富士ソフトの二宮です。
>
> 現在、開発した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以下をご覧ください。

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

root
オフライン
Last seen: 5時間 34分 前
登録日: 2009-06-23 14:31
[openrtm-users 01502] OpenRTMのロガーについて

安藤様

お世話になっております。富士ソフトの二宮です。
早々にお返事を頂き、ありがとうございます。

>> 1.ログ出力のシリアライズについて
>> doxygenを確認したところ、マルチスレッド書き込みに対してはシリアライズ
>> してバッファリングする対応をされているようですが、マルチプロセス(※)に
>> ついては何か対応をされていますでしょうか?
>> ※rtc.confのlogger.file_nameに複数のRTCで同じファイルを指定した場合。
>
> 複数プロセスからの書き込みに対しては特に対処をしていません。
> Loggerはstd::basic_ostreamを利用しており、複数プロセスからの
> 書き込みの場合その挙動に準じます。

了解いたしました。
現在扱っているRTCの数が多く、スレッド・プロセスに関わらずRTCのログを
1つにまとめて、処理順に出力されるようにならないものかと考えておりましたが、
複数プロセスについては、まずは挙動を確認してみることにします。

>> 2.ログ出力のオーバーヘッドについて
>> バッファリングしたログをファイルに吐き出すタイミングはどのような仕組みで
>> 行われているか、ご教授頂けますでしょうか?
>
> coutなどと同様にstd::endlやstd::flushを呼び出したときに書きだされるように
> なっていると思います。

了解いたしました。

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

了解いたしました。是非ご検討をお願いいたします。

なお、これについては、ローカルで対応してしまう可能性がございますので、
もし、実装されることになった場合、大まかで構いませんので、スケジュールを
お知らせいただければと思います。

>> なお、これについてはログにとどまらない話ですが、、、
>> RTC開発者側で「時間計測」についてのコードを入れたことにより、
>> そのRTCがOS依存になってしまうパターンと言うのが少なからず
>> 存在していますので、ミドルウェア層で吸収できる手段があれば
>> 展開いただければと思います。
>
> 時間計測については、coil::TimeMeasureを利用していただければと存じます。
> 詳細なドキュメントはないのですが、ヘッダとtest/TimeMeasure以下をご覧ください。

貴重な情報を頂き、ありがとうございます。早速試してみます。

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

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク