mirror of
https://github.com/open-goal/jak-project
synced 2026-07-07 22:22:21 -04:00
@@ -108,9 +108,28 @@ void log_print(const char* message) {
|
||||
}
|
||||
} // namespace internal
|
||||
|
||||
// how many extra log files for a single program should be kept?
|
||||
constexpr int LOG_ROTATE_MAX = 5;
|
||||
|
||||
void set_file(const std::string& filename) {
|
||||
ASSERT(!gLogger.fp);
|
||||
file_util::create_dir_if_needed_for_file(filename);
|
||||
|
||||
// rotate files. log.txt is the current one, log.1.txt is the previous one, etc.
|
||||
auto as_path = fs::path(filename);
|
||||
auto stem = as_path.stem().string();
|
||||
auto ext = as_path.extension().string();
|
||||
auto dir = as_path.parent_path();
|
||||
for (int i = LOG_ROTATE_MAX; i-- > 0;) {
|
||||
auto src_name = i != 0 ? fmt::format("{}.{}{}", stem, i, ext) : fmt::format("{}{}", stem, ext);
|
||||
auto src_path = dir / src_name;
|
||||
if (file_util::file_exists(src_path.string())) {
|
||||
auto dst_name = fmt::format("{}.{}{}", stem, i + 1, ext);
|
||||
auto dst_path = dir / dst_name;
|
||||
file_util::copy_file(src_path, dst_path);
|
||||
}
|
||||
}
|
||||
|
||||
gLogger.fp = file_util::open_file(filename.c_str(), "w");
|
||||
ASSERT(gLogger.fp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user