2017-03-23 10 views
0

ログメッセージをディスクに書き込もうとしているので、FileAppender(バッファなしの同期)を選択します。しかし、速度はそれほど良くない。 次のコードを検討するlog4cxxのベストプラクティスは何ですか?

const std::string pattern("%d %m%n"); 
log4cxx::LayoutPtr layPtr = new PatternLayout(pattern); 
FileAppender *fileappender = new FileAppender(layPtr, "log4cxx_bench.log", true); 
const std::string line(30, 'k'); 
LOG4CXX_INFO(logger1, line); 

はほぼ4秒を費やしています。ファイルサイズは60MBです。その速度は15MB/sです。私はXcodeでプロファイルしようとしました。プロフィール画像は以下の通りです: enter image description here

バッファに同期するように変更してください。ほとんど同じ。私はそれを最適化する方法を知らない。

答えて

1

簡潔に言えば、既定では少ないログです。

ほとんどのLOG4CXX呼び出しは、本番システムではデフォルトで記録されないレベルにある必要があります。何かがうまくいかず、システムの一部のコンポーネントをデバッグしたい場合、そのコンポーネントのロギングがより冗長なレベルで行われるように構成を調整します。これは、ログを少なくしてアプリケーションを高速化することです。

もう一つのアイデアは、LOG4CXXを構成して、ログメッセージごとに(必要でない場合は)追加情報を少なくすることです。

また、フラッシュSSDやtmpfsなどの高速デバイスを使用するようにログファイルを変更することもできます。

関連する問題