|
|
|
@ -27,12 +27,14 @@ template<typename Mutex>
|
|
|
|
|
class rotating_file_sink SPDLOG_FINAL : public base_sink<Mutex>
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
rotating_file_sink(filename_t base_filename, std::size_t max_size, std::size_t max_files)
|
|
|
|
|
rotating_file_sink(filename_t base_filename, std::size_t max_size, std::size_t max_files, bool rotate_on_open=false)
|
|
|
|
|
: base_filename_(std::move(base_filename))
|
|
|
|
|
, max_size_(max_size)
|
|
|
|
|
, max_files_(max_files)
|
|
|
|
|
{
|
|
|
|
|
file_helper_.open(calc_filename(base_filename_, 0));
|
|
|
|
|
if (rotate_on_open)
|
|
|
|
|
rotate_();
|
|
|
|
|
current_size_ = file_helper_.size(); // expensive. called only once
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -130,15 +132,15 @@ using rotating_file_sink_st = rotating_file_sink<details::null_mutex>;
|
|
|
|
|
|
|
|
|
|
template<typename Factory = default_factory>
|
|
|
|
|
inline std::shared_ptr<logger> rotating_logger_mt(
|
|
|
|
|
const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files)
|
|
|
|
|
const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files, bool rotate_on_open=false)
|
|
|
|
|
{
|
|
|
|
|
return Factory::template create<sinks::rotating_file_sink_mt>(logger_name, filename, max_file_size, max_files);
|
|
|
|
|
return Factory::template create<sinks::rotating_file_sink_mt>(logger_name, filename, max_file_size, max_files, rotate_on_open);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<typename Factory = default_factory>
|
|
|
|
|
inline std::shared_ptr<logger> rotating_logger_st(
|
|
|
|
|
const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files)
|
|
|
|
|
const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files, bool rotate_on_open = false)
|
|
|
|
|
{
|
|
|
|
|
return Factory::template create<sinks::rotating_file_sink_st>(logger_name, filename, max_file_size, max_files);
|
|
|
|
|
return Factory::template create<sinks::rotating_file_sink_st>(logger_name, filename, max_file_size, max_files, rotate_on_open);
|
|
|
|
|
}
|
|
|
|
|
} // namespace spdlog
|
|
|
|
|