ovanes
ovanes

Reputation: 5673

Limiting size of rotation logs in Boost Log v2

I am a bit stuck to implement a very simple scenario with boost log. I need to limit the size of entire rotation log.

My current logger configuration looks like that:

void setup_logging( channel_settings_t const& settings
                , std::string const& log_file
                , std::string const& log_level
                )
{
  config_logger_attributes(logging::core::get(), settings, log_level);

  using namespace logging::aux::default_attribute_names;

  //add logging to file (which implicitly deletes the default console logger)
  logging::add_file_log
  (
    keywords::auto_flush = true,
    keywords::open_mode = std::ios::out | std::ios::app,
    keywords::file_name = log_file+"_%N.log",
    keywords::rotation_size = 50 * 1024, // Just for test limit to 50K
    keywords::format = //"%TimeStamp%: [%Channel%] |ThreadId| <%Severity%> %Message%"
      expr::format("%1% : [%2%] |%3%| <%4%> %5%")
      % expr::attr< boost::posix_time::ptime >(timestamp())
      % expr::attr<std::string>(channel())
      % expr::attr<attrs::current_thread_id::value_type>(thread_id())
      % trivial::severity
     % expr::smessage
  )->locked_backend()->set_file_collector
     ( sinks::file::make_collector
       ( keywords::target = "logs"
       , keywords::max_size = 200 * 1024 // just for test limit to 200K
       )
     )
  ;
}

Unfortunately, I can't find what the target keyword means, despite the fact that it is a target directory. Target directory relating to smth or should there be a full path? Should this target directory exist? I did a test and rotating log files just grow upon the 200K limit.

I just want to have let's say 3 or 4 last rotated log files, the rest should be removed? We already ran into the situation, where the logger used all disc space and the server crashed :(

Any help if very appreciated!

Upvotes: 2

Views: 2076

Answers (1)

ovanes
ovanes

Reputation: 5673

Ok, found it out:

keywords::target

is the fully qualified directory path where to store rotated logs, so it must be smth like:

/var/log/dir-to-app

Than the limitation works as expected.

Upvotes: 2

Related Questions