mirror of
https://github.com/gabime/spdlog.git
synced 2025-05-03 13:23:51 +00:00
Allow manual rotation of rotating_file_sink (#3269)
* Allow manual rotation of rotating_file_sink * Rename rotation method * Attempted fix for tests on Windows * Apply review mark-ups
This commit is contained in:
parent
15f539685b
commit
951c5b9987
@ -69,6 +69,11 @@ SPDLOG_INLINE filename_t rotating_file_sink<Mutex>::filename() {
|
|||||||
return file_helper_.filename();
|
return file_helper_.filename();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Mutex>
|
||||||
|
SPDLOG_INLINE void rotating_file_sink<Mutex>::rotate_now() {
|
||||||
|
rotate_();
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Mutex>
|
template <typename Mutex>
|
||||||
SPDLOG_INLINE void rotating_file_sink<Mutex>::sink_it_(const details::log_msg &msg) {
|
SPDLOG_INLINE void rotating_file_sink<Mutex>::sink_it_(const details::log_msg &msg) {
|
||||||
memory_buf_t formatted;
|
memory_buf_t formatted;
|
||||||
|
@ -28,6 +28,7 @@ public:
|
|||||||
const file_event_handlers &event_handlers = {});
|
const file_event_handlers &event_handlers = {});
|
||||||
static filename_t calc_filename(const filename_t &filename, std::size_t index);
|
static filename_t calc_filename(const filename_t &filename, std::size_t index);
|
||||||
filename_t filename();
|
filename_t filename();
|
||||||
|
void rotate_now();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void sink_it_(const details::log_msg &msg) override;
|
void sink_it_(const details::log_msg &msg) override;
|
||||||
|
@ -101,3 +101,23 @@ TEST_CASE("rotating_file_logger3", "[rotating_logger]") {
|
|||||||
REQUIRE_THROWS_AS(spdlog::rotating_logger_mt("logger", basename, max_size, 0),
|
REQUIRE_THROWS_AS(spdlog::rotating_logger_mt("logger", basename, max_size, 0),
|
||||||
spdlog::spdlog_ex);
|
spdlog::spdlog_ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test on-demand rotation of logs
|
||||||
|
TEST_CASE("rotating_file_logger4", "[rotating_logger]") {
|
||||||
|
prepare_logdir();
|
||||||
|
size_t max_size = 1024 * 10;
|
||||||
|
spdlog::filename_t basename = SPDLOG_FILENAME_T(ROTATING_LOG);
|
||||||
|
auto sink = std::make_shared<spdlog::sinks::rotating_file_sink_st>(basename, max_size, 2);
|
||||||
|
auto logger = std::make_shared<spdlog::logger>("rotating_sink_logger", sink);
|
||||||
|
|
||||||
|
logger->info("Test message - pre-rotation");
|
||||||
|
logger->flush();
|
||||||
|
|
||||||
|
sink->rotate_now();
|
||||||
|
|
||||||
|
logger->info("Test message - post-rotation");
|
||||||
|
logger->flush();
|
||||||
|
|
||||||
|
REQUIRE(get_filesize(ROTATING_LOG) > 0);
|
||||||
|
REQUIRE(get_filesize(ROTATING_LOG ".1") > 0);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user