MongoDB的な何か。 ログ出力について

最近、MongoDBのソースコードを読もうと思いました。
理由は、使うかもしれないから。です。
自分が一番気になる箇所は、DiskI/O(バッファとかの扱い方、flushのタイミングなど)ですが、
まずは基本的なログ出力から確認してみました。(まぁ、デバックコードとか入れるときのためです)
そもそも、C++は未だかつてやったことがないです。。。

今回確認したソースのバージョンは MondoDB 2.0.4 です。
MongoDBの起動時のログファイルより。
Wed Apr 4 21:44:43 [initandlisten] MongoDB starting : pid=XXXX port=XXXXX dbpath=/home/mongodb/data 64-bit host=XXX
なので。。

db.cpp

                          • -

417 Nullstream& l = log();
418 l << "MongoDB starting : pid=" << pid << " port=" << cmdLine.port << " dbpath=" << dbpath;
419 if( replSettings.master ) l << " master=" << replSettings.master;
420 if( replSettings.slave ) l << " slave=" << (int) replSettings.slave;
421 l << ( is32bit ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << endl;
422 }

                          • -

なので、log()を追う必要があります。

log.h

                          • -

362 inline Nullstream& log() {
363 return Logstream::get().prolog();
364 }

                          • -

inline使ってました。。。まぁ log だからそんなもんでしょうか。

log.h

                          • -

275 Logstream& prolog() {
276 return *this;
277 }
.....
299 public:
300 static Logstream& get() {
301 if ( StaticObserver::_destroyingStatics ) {
302 cout << "Logstream::get called in uninitialized state" << endl;
303 }
304 Logstream *p = tsp.get();
305 if( p == 0 )
306 tsp.reset( p = new Logstream() );
307 return *p;
308 }

                          • -

となってます。

うーん。まぁ細かいところは追いませんが、こんな感じ。