After adding append flag "keywords::open_mode = std::ios_base::app" to file sink the normal file rotation is not happening when the file reaches Max size, as specified in below code:
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);
Boost Log version: 1.59
Behavior observed: After every time the process using boost logger starts; the log messages are getting appended to existing log file instead of creating new log file. But when the log file reaches it max size then boost file rotation policy is not happening and new log file is getting created without moving old log file to target directory.
Expected behavior: The log file should be appended with log messages and when reaches max size it should be rotated properly.
Please let me know if there is any solution to this problem.
In your program, you give same rotation size and maximum size this may be a problem. So try by giving maximum size as 5000000 and rotation size as 500000 (maximum size / 10). So that you may have 9 or 10 files before reaching maximum size.
Another thing is maximum size you set here is for folder (i.e.: //tmp - folder). Once the files (all files) reaches the size of maximum then old file gets deleted and new file will be placed in that folder.
Another thing is you can set file name as
test_%N.log
. So that your rotated file gets new name astest_1.log
,test_2.log
, etc.Refer this site : http://boost-log.sourceforge.net/libs/log/doc/html/log/detailed/sink_backends.html