我有一个记录器系统,它基本上是以线程安全的方式将我的数据写入 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 任务切换文件?我猜没有。
我唯一能想到的肯定会起作用的是,如果我让应用程序本身打开一个新文件,并在持有日志互斥锁的同时将 clog 的 rdbuf 重定向到该文件。但这感觉像是一个便宜的解决方案,我需要检查一下是否是时候经常轮换日志以使其有效。必须有更好的方法。