当前位置:  开发笔记 > 编程语言 > 正文

Linux/c ++日志轮换方案

如何解决《Linux/c++日志轮换方案》经验,为你挑选了2个好方法。

我有一个记录器系统,它基本上是一种以线程安全的方式将数据写入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重定向到该文件.但这感觉就像一个廉价的解决方案,我需要检查一下,看看是时候经常轮换日志以使其有效.必须有一个更好的方法.



1> Paul Tomblin..:

您可以使用/etc/logrotate.conf和/或/etc/logrotate.d/中配置的内置日志轮换方法 - 通常会让logrotate向您的应用发送SIGUSR1作为信号以关闭并重新打开所有日志文件.



2> Steve Lazari..:

或者只使用syslog而不是自定义日志记录方案,无论如何都会通过logrotate轮换日志. - 取决于它的配置方式,但在大多数桌面/服务器系统上,它已经设置为旋转它们.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有