diff --git a/include/spdlog/sinks/daily_file_sink.h b/include/spdlog/sinks/daily_file_sink.h index 3cfe8dbc..7ced6e00 100644 --- a/include/spdlog/sinks/daily_file_sink.h +++ b/include/spdlog/sinks/daily_file_sink.h @@ -44,17 +44,18 @@ class daily_file_sink SPDLOG_FINAL : public base_sink { public: // create daily file sink which rotates on given time - daily_file_sink(filename_t base_filename, int rotation_hour, int rotation_minute) + daily_file_sink(filename_t base_filename, int rotation_hour, int rotation_minute, bool truncate = false) : base_filename_(std::move(base_filename)) , rotation_h_(rotation_hour) , rotation_m_(rotation_minute) + , truncate_(truncate) { if (rotation_hour < 0 || rotation_hour > 23 || rotation_minute < 0 || rotation_minute > 59) { throw spdlog_ex("daily_file_sink: Invalid rotation time in ctor"); } auto now = log_clock::now(); - file_helper_.open(FileNameCalc::calc_filename(base_filename_, now_tm(now))); + file_helper_.open(FileNameCalc::calc_filename(base_filename_, now_tm(now)), truncate_); rotation_tp_ = next_rotation_tp_(); } @@ -64,7 +65,7 @@ protected: if (msg.time >= rotation_tp_) { - file_helper_.open(FileNameCalc::calc_filename(base_filename_, now_tm(msg.time))); + file_helper_.open(FileNameCalc::calc_filename(base_filename_, now_tm(msg.time)), truncate_); rotation_tp_ = next_rotation_tp_(); } fmt::memory_buffer formatted; @@ -104,6 +105,7 @@ private: int rotation_m_; log_clock::time_point rotation_tp_; details::file_helper file_helper_; + bool truncate_; }; using daily_file_sink_mt = daily_file_sink; @@ -115,14 +117,14 @@ using daily_file_sink_st = daily_file_sink; // factory functions // template -inline std::shared_ptr daily_logger_mt(const std::string &logger_name, const filename_t &filename, int hour = 0, int minute = 0) +inline std::shared_ptr daily_logger_mt(const std::string &logger_name, const filename_t &filename, int hour = 0, int minute = 0, bool truncate = false) { - return Factory::template create(logger_name, filename, hour, minute); + return Factory::template create(logger_name, filename, hour, minute, truncate); } template -inline std::shared_ptr daily_logger_st(const std::string &logger_name, const filename_t &filename, int hour = 0, int minute = 0) +inline std::shared_ptr daily_logger_st(const std::string &logger_name, const filename_t &filename, int hour = 0, int minute = 0, bool truncate = false) { - return Factory::template create(logger_name, filename, hour, minute); + return Factory::template create(logger_name, filename, hour, minute, truncate); } } // namespace spdlog