У меня есть система ведения журнала, которая в основном представляет собой причудливый способ записи моих данных в std :: clog безопасным для потока способом.
Я также перенаправлю std::clog
в файл, подобный этому:
int main() {
std::ofstream logfile(config::logname, std::ios::app);
std::streambuf *const old_buffer = std::clog.rdbuf(logfile.rdbuf());
// .. the guts of the application
std::clog.rdbuf(old_buffer);
}
Это прекрасно работает ... однако мое приложение также выдает очень большое количество журналов. Мне было интересно, что было бы хорошим способом правильно вращать мои файлы журналов. Есть ли безопасный способ выключить файл с помощью задачи cron? Я бы догадался, нет.
Единственное, что я могу придумать, это определенно сработает, если у меня само приложение откроет новый файл и перенаправит на него rdbuf clog, удерживая мьютекс записи. Но это похоже на дешевое решение, и мне нужно было бы проверить, чтобы узнать, пора ли довольно часто вращать журналы, чтобы оно было эффективным. Должен быть лучший способ.