C++:创建程序运行的log.txt日志文件,写入要保存的信息,并间隔48小时清空文件中内容

本文主要对程序运行中需要记录的信息如何保存为日志文件,并定期进行清空,减少内存消耗等内容进行介绍。主要设计开发逻辑和基于C++语言的代码。

代码

主要逻辑流程

  1. 先判断.txt文件是否存在,如果不存在则进行创建,其中所有路径都在配置文件config.ini中配置。
  2. 根据.txt文件的路径和程序运行时产生的信息,向里边添加要保存的内容,如执行某检测过程时要保存的时间、类别和置信度等信息。本运行保存的有log.txt文件创建时间、检测到图像时间、图像名称、类别和置信度等信息。
    3.判断间隔时间是否大于设置的时间(两天或者根据自己情况设置的清空log.txt文件内容的时间),如果大于则进行文件清空,不大于则继续进行保存。此处可以采用多种方法,本代码采用的是删除和创建。

代码


#include "Laod_Save.h"


int main() {
 	DetYolov7 det;//定义一个yolov7的类
 	std::string Model_dir;
  	std::string Label_txt;
	std::string Load_Path;
 	std::string Save_Path;
 	std::string Log_Path;
 	//加载五个文件路径的函数
	read_ini_file("./config.ini", Load_Path, Save_Path, Model_dir, Label_txt, Log_Path);
	//模型初始化
    det.init(Model_dir, Label_txt, cof_threshold, nms_area_threshold);
    //在创建时会先判断是否有log.txt存在,若不存在则进行创建,并写入创建时间等信息
	Create_Log_File(Log_Path);
    std::time_t lastDeleteTime = 0;
    while (1{
        // 获取当前时间
        std::time_t currentTime = std::time(0);
        // 计算时间差(分钟)
        //注意,第一次的结果结果较大,是因为currentTime时间不是从0开始的
        std::time_t timeDiff = currentTime - lastDeleteTime;
        int minutesDiff = (int)timeDiff / 60;//单位分钟

        // 如果时间差大于等于2880(48小时)分钟,则执行删除和重新创建操作
        if (minutesDiff >= 2880) 
        {
        //若时间间隔大于设置的阈值,则清空(删除)已经存在的log.txt日志文件
           Del_Log_File(Log_Path);
           //开始重新计时
           lastDeleteTime = currentTime;
           //再创建一个新的log.txt文件,继续加载写入要保存的信息。 		  
		  Create_Log_File(Log_Path);
        }
        
        /*
        //加载图像和读取图像名称,并分别保存到相应的容
         Load_Img_name(Load_Path, vec_ImageNames, vec_ImageLoad);
         //输入的是图像,以及推理之后添加完框、置信度和类别的图像的保存路径
         //通过定义的结构体result返回目标类别、置信度和框等信息
         auto result = det.detector(Infe_Image, OutputImagePath);
        */
        //把log.txt路径、图像名字、标签和置信度输入到相应函数,
        //进行图像名字、标签和置信度信息的写入
        //其中,时间信息在函数体内实现。
        Log_Infor_ToFile(Log_Path, name, Label, Confidence);
       
    }

    return 0;
}

总结

最后运行代码,保存的log.txt文件内容信息和格式如下。
图1 log.txt文件内容和格式展示图

其中,需要注意代码中第一次判断时std::time_t currentTime = std::time(0);的值较大,因为 std::time(0)的值不是从零开始的。
此外,因涉及到项目的一些内容,文中的代码有些地方不方便公开,但逻辑是完整的。有需要完整版的或代开发的欢迎私聊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木彳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值