テキストファイルを使用する前にopen_modeを指定する必要があります。デフォルトでBoost.Logはオープンモードとしてstd :: ios_base :: trunc | std :: ios_base :: outを使用します。これは明らかに古いログファイルを切り捨てます。
次のパラメータを使用してインスタンスを作成することができtext_file_backend:
{
boost::shared_ptr<sinks::text_file_backend> backend =
boost::make_shared<sinks::text_file_backend>(
keywords::file_name = logger_file_path,
keywords::open_mode = std::ios_base::app|std::ios_base::out,
keywords::rotation_size = 5 * 1024 * 1024,
keywords::time_based_rotation = sinks::file::rotation_at_time_point(12, 0, 0));
// Wrap it into the frontend and register in the core.
// The backend requires synchronization in the frontend.
typedef sinks::synchronous_sink<sinks::text_file_backend> sink_t;
boost::shared_ptr<sink_t> sink(new sink_t(backend));
sink->set_formatter(logFmt);
core->add_sink(sink);
}
私は(backend-> scan_for_filesを使用します)。私のプログラムでは、このコードを実行すると、プログラムがクラッシュしました。これについてのアイデアは? –
回転は機能しますが、追加はどうですか?プログラムは、ログファイルがローテーション限界に達するまで、プログラムのその後の実行ごとに最後のログに追加する必要があります。このコードは、実行ごとに新しいログファイルを作成し、 'scan_for_files'を追加することは効果がありません。 – ixe013
あなたはそうです、@ Ixe013。私は私の答えを改訂しました。 –