通用插件框架体系-日志系统

本文详细介绍了如何设计一个高效的通用日志系统,包括日志级别的控制、文本文件追加记录、C++宏定位代码行数、多线程场景下的线程安全以及配置文件读写等功能。通过实例展示了类CTrack的实现,包括日志配置文件的读取、日志输出对象的构造、单实例化、输出函数以及对外接口。最后,提供了使用示例,便于在项目中应用。
摘要由CSDN通过智能技术生成

通用插件框架体系-日志系统:

1.目的
     日志是软件系统的基本功能,通过日志可以跟踪代码执行、分析问题。但日志系统作为一个辅助系统也有一些自己的要求。
     1.执行效率足够快,不应对主业务产生影响。
     2.可以根据需要控制输出的信息类容。
     3.能适应复杂的项目环境
     4.能跟踪到代码文件的行数
     5.使用足够简单
     
2.设计思路
    1.使用级别控制,将基本分为错误、告警、提示、轨迹等级别。
    2.使用文本文件追加式记录(对比过多种记录方式,如内存数据库,只有这种方式速度最快,耗费资源最小)
    3.使用c++的宏跟踪文件的名和代码行数,准确定位记录点。
    4.日志系统交复杂的场景是多线程场景,使用线程锁防止信息输出混乱(当然这也损失了一些效率)
                在设计上,首先实现了一个基本的类CTrack,再以这个类为基础提供了一个对外的接口Track,之后再定义了各种宏,方便模块的使用。

3.代码解析
    3.1.日志配置文件读写
        日志配置文件记录了日志文件的输出路径、允许输出的级别、日志文件名。使用ini文件保存在运行目录下的config目录中。
        配置文件内容
        TRACK_LEVEL = 6
        LOG_PATH = /tmp/WsLogs
        LOG_NAME = Testlog
        
        配置文件的读取:
        void CTrack::ReadConfig(const string & path)
        {
        }
        
        void CTrack::Filtter(string & str)
        {
        }
        
        void CTrack::Splite(const string & str,char deom, vector<string> &strls)
        {
        }
        
        void CTrack::filterSpace(string &str)
        {
        }
        
    3.2.日志输出对象的构造
        CTrack::CTrack(void)
            :m_count(0),m_trackLevel(9)
        {
            string appPath,appName;
            this->GetAppName(appPath,appName);

            string dataPath;
            this->Re

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wolfseek

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

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

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

打赏作者

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

抵扣说明:

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

余额充值