我有一个记录器系统,它基本上是一种用线程安全方式将数据写入std :: clog的奇特方式。Linux/c + +日志轮换计划
我也,重定向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任务来切换文件?我猜不。
我唯一能想到的就是如果我让应用程序本身打开一个新文件,并在持有日志互斥锁的同时重定向cld的rdbuf。但是这感觉像是一个便宜的解决方案,我需要检查一下,看看是否应该经常轮换日志以使其有效。有一个更好的方法。
所以基本上你所说的是我添加了一个SIGUSR1处理程序,它在关闭/重新打开的同时按住日志锁定,并且logrotate会发出我的应用程序的信号有定期? – 2009-01-26 16:58:09
即使只有配置logrotate才能旋转日志,并将其设置为向应用发送SIGUSR1。它不会自动发生。 – 2009-01-26 17:48:01