向文件接收器添加追加標誌「keywords :: open_mode = std :: ios_base :: app」後文件達到正常文件輪轉最大尺寸,如以下代碼中指定:在Boost中添加追加標誌後文件旋轉的問題1.59日誌v2
typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink;
boost::shared_ptr<logging::core> core = logging::core::get();
boost::shared_ptr<file_sink> sink(new file_sink(
keywords::file_name = "/tmp/test.log", // log file with full path
keywords::open_mode = std::ios_base::app, // append mode set
keywords::rotation_size = 5000000
));
sink->locked_backend()->set_file_collector(sinks::file::make_collector(
keywords::target = "/tmp/", // log file & target have same dir
keywords::max_size = 5000000,
keywords::min_free_space = 100000
));
sink->locked_backend()->scan_for_files();
sink->locked_backend()->auto_flush(true);
core->add_sink(sink);
升壓登錄版本:1.59
行爲觀察: 每次使用升壓記錄器開始處理後;日誌消息正在追加到現有的日誌文件中,而不是創建新的日誌文件。但是,當日志文件達到最大大小時,不會發生增強文件輪轉策略,並且無需將舊日誌文件移動到目標目錄即可創建新日誌文件。
預期行爲: 日誌文件應附加日誌消息,當達到最大大小時應正確旋轉。
請讓我知道,如果有任何解決這個問題。
任何更新或解決方案? – SGPJ
除了明顯不正確的'max_size'值,日誌文件旋轉對我來說工作正常。文件名'test.log'不包含任何佔位符,所以我在'tmp'目錄下'test.log00000','test.log00001'等。 –
另外,您應該知道,如果將日誌文件收集到與最初寫入日誌文件的目錄不同的目錄中,則在重新啓動進程後不會再附加該文件。在退出進程前,終止之前由進程寫入的最後一個文件將被輪換,並且下一個進程將在其位置創建一個新文件。只有當前一個文件沒有移動到另一個目錄時,文件追加纔會發生。 –