加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux / c日志轮换方案

发布时间:2020-12-14 01:37:51 所属栏目:Linux 来源:网络整理
导读:我有一个记录器系统,它基本上是一种以线程安全的方式将数据写入std :: clog的奇特方式. 我也将std :: clog重定向到这样的文件: int main() { std::ofstream logfile(config::logname,std::ios::app); std::streambuf *const old_buffer = std::clog.rdbuf(l
我有一个记录器系统,它基本上是一种以线程安全的方式将数据写入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重定向到该文件.但这感觉就像一个廉价的解决方案,我需要检查一下,看看是时候经常轮换日志以使其有效.必须有一个更好的方法.

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读