バグ #634
完了
OpenRTM-aist-1.0.0-RC1にてlog_levelを設定しないとログが出力されない問題
kurihara さんが15年以上前に追加.
ほぼ15年前に更新.
説明
OpenRTM-aist-1.0.0-RC1にて、RTコンポーネントのログを出力したい場合、
rtc.confのlogger.log_levelを設定する必要がある。
logger.log_levelを設定していない場合、空のログファイルが作成される。
- ステータス を 新規 から フィードバック に変更
7/27現在での最新バージョン(リビジョン1476)では、下記の現象が起きている。
(下記はrtc.confにて、logger.enable: yes と指定済みである。)
- logger.log_levelをPARANOID以外に設定した場合、空のログファイルが作成される。(PARANOIDを設定した場合はログがログファイルに書き出されている。)
- logger.log_levelを設定せずに、logger.file_name: rtc.log, stdoutのように標準出力にもログ出力を行うように設定した場合、ログレベルがPARANOID以下のログが標準出力にだけ出力される。このときも、rtc.logファイルは作成されるが空である。
- 空のログファイルが生成される不具合について
coil:: LogStreamBuffer で ログが flush されていないないようです。調査して報告します。
- 原因
coil::LogStreamBuffer::sync() でバッファの内容を flush していないため発生していた。
呼び出し側で coil::LogStreamBuffer::addStreram に追加した Stream を close した場合は、ファイルにログが残るが、close が行われなずに終了した場合、ファイルが空になる。
- 対策
coil::LogStreamBuffer::sync() から呼び出される stream_sputn() で pubsync() の呼び出しを追加。(pubsync() はデバイスにバッファの内容を書き込む。)
- 確認
coilのunitテストでログがファイルに出力されることを確認。(posix版,win32版の両方で確認。)
examples の ConsileOutComp で rtc.conf の logger.log_level を DEBUG,INFO にして実行し、ファイルのログが出力されていることを確認。(posix版,win32版の両方で確認。)
- ステータス を フィードバック から 解決 に変更
- 進捗率 を 0 から 100 に変更
他の形式にエクスポート: Atom
PDF