Skip to content

Commit d012470

Browse files
committed
feat: add rotating log option
1 parent 5480ff8 commit d012470

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

include/SFSE/API.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ namespace SFSE
2323
#endif
2424
const char* logName{ nullptr };
2525
const char* logPattern{ nullptr };
26+
std::size_t logRotate{ 0 };
2627
bool trampoline{ false };
2728
std::size_t trampolineSize{ 0 };
2829
bool hook{ true };

src/SFSE/API.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <spdlog/sinks/basic_file_sink.h>
77
#include <spdlog/sinks/msvc_sink.h>
8+
#include <spdlog/sinks/rotating_file_sink.h>
89
#include <spdlog/spdlog.h>
910

1011
namespace SFSE
@@ -77,10 +78,16 @@ namespace SFSE
7778
*path /= std::format("{}.log", info.logName ? info.logName : SFSE::GetPluginName());
7879

7980
std::vector<spdlog::sink_ptr> sinks{
80-
std::make_shared<spdlog::sinks::basic_file_sink_mt>(path->string(), true),
8181
std::make_shared<spdlog::sinks::msvc_sink_mt>()
8282
};
8383

84+
if (info.logRotate > 0) {
85+
constexpr auto maxSize = std::numeric_limits<std::size_t>::max();
86+
sinks.push_back(std::make_shared<spdlog::sinks::rotating_file_sink_mt>(path->string(), maxSize, info.logRotate, true));
87+
} else {
88+
sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>(path->string(), true));
89+
}
90+
8491
auto logger = std::make_shared<spdlog::logger>("global", sinks.begin(), sinks.end());
8592
logger->set_level(static_cast<spdlog::level::level_enum>(info.logLevel));
8693
logger->flush_on(static_cast<spdlog::level::level_enum>(info.logLevel));

0 commit comments

Comments
 (0)