Skip to content

Commit 7c36cdd

Browse files
committed
feat: add rotating log option
1 parent baebc88 commit 7c36cdd

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

include/F4SE/API.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace F4SE
2929
#endif
3030
const char* logName{ nullptr };
3131
const char* logPattern{ nullptr };
32+
std::size_t logRotate{ 0 };
3233
bool trampoline{ false };
3334
std::size_t trampolineSize{ 0 };
3435
bool hook{ true };

src/F4SE/API.cpp

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

1010
#include <spdlog/sinks/basic_file_sink.h>
1111
#include <spdlog/sinks/msvc_sink.h>
12+
#include <spdlog/sinks/rotating_file_sink.h>
1213
#include <spdlog/spdlog.h>
1314

1415
namespace F4SE
@@ -91,10 +92,16 @@ namespace F4SE
9192
path /= std::format("My Games/{}/F4SE/{}.log", GetSaveFolderName(), info.logName ? info.logName : GetPluginName());
9293

9394
std::vector<spdlog::sink_ptr> sinks{
94-
std::make_shared<spdlog::sinks::basic_file_sink_mt>(path.string(), true),
9595
std::make_shared<spdlog::sinks::msvc_sink_mt>()
9696
};
9797

98+
if (info.logRotate > 0) {
99+
constexpr auto maxSize = std::numeric_limits<std::size_t>::max();
100+
sinks.push_back(std::make_shared<spdlog::sinks::rotating_file_sink_mt>(path.string(), maxSize, info.logRotate, true));
101+
} else {
102+
sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>(path.string(), true));
103+
}
104+
98105
auto logger = std::make_shared<spdlog::logger>("global", sinks.begin(), sinks.end());
99106
logger->set_level(static_cast<spdlog::level::level_enum>(info.logLevel));
100107
logger->flush_on(static_cast<spdlog::level::level_enum>(info.logLevel));

0 commit comments

Comments
 (0)