`

[C++][Logging] 项目中写日志模块的实现

 
阅读更多
    一提到log,相信很多人就知道我要写些什么东西了,在所有的项目中都有自己一套写日志的模块。下面呢,我就根据平时的项目的需求写了一个比较简单使用的logger,方便输出各种等级的log。

    事先声明一下,代码仅供大家学习参考之用,有什么不足的地方还请大家提出来。在实际使用中可以考虑把log放入一个list,然后用一个线程专门负责写log.

    下面logger的结构,有需要的源代码的,索取一下密码,谢谢!

 class Logger
{
public:
    static void InitLoggerConfig(void);
    static void StringLog(LogLevel logLevel, const string& strFuctionName, int lineNumber, string strFileName, const char* strInfo);
    static void Log(LogLevel logLevel, const string& strFuctionName, int  lineNumber, string strFileName, const char* strFormat, ...);
    static void Log(LogLevel logLevel, StringBuilder& stringBuilder, const string& strFuctionName, int  lineNumber, string strFileName);
    static void RetureLog(LogLevel logLevel, const string& strFuctionName, int  lineNumber, string strFileName, const char* strInfo);
    static void LogPrinter(LogLevel logLevel, const char* strInfo, ...);

private:
    static string GetFileMainPath();

private:
    static string     mStrLog;
    static string     mStrFileName;
    static string     mStrFileMainPath;
    static time_t     mTimeValue;
    static LogLevel   mLogLevel;
    static tm         mDateTime;
    static LogManager mLogManager;

};


//测试代码
int main()
{
    const char *pInfo = "strInfo";
    const char *pWarringInfo = "Waring Log";
    const char *pErrorInfo = "Error Log";
    const char *pFatalInfo = "Fatal Log";
    const char *pDebugInfo = "Debug Log";

    INIT_LOG();

    INFO_LOG(pInfo);
    WARN_LOG(pWarringInfo);
    ERR_LOG(pErrorInfo);
    FATAL_LOG(pFatalInfo);
    DEBUG_LOG(pDebugInfo);

    INFO("%s", pInfo);
    WARN("%s",pWarringInfo);
    ERR (" %s",pErrorInfo);
    FATAL(" %s",pFatalInfo);
    DEBUG(" %s",pDebugInfo);

    int i = 0;
    XX_INFO_LOG( pInfo << &i);
    XX_WARN_LOG( pWarringInfo << 1 );
    XX_ERR_LOG( pErrorInfo << 2 );
    XX_FATAL_LOG( pFatalInfo << 3 );
    XX_DEBUG_LOG( pDebugInfo << 4 );
   
    LOG_PRINTER(INFO,"%d %f %c %s", 1, 1.2, 'c', "123");
    LOG_PRINTER(FATAL,"%d %f %c", 1, 1.2, 'c');
    LOG_PRINTER(ERR,"%d %f %c", 1, 1.2, 'c');

      return 0;
}





分享到:
评论
2 楼 u013189503 2015-10-16  
来个密码吧
1 楼 wyf_vc 2013-03-14  
来个密码啊!!

相关推荐

    读写日志文件

    在IT行业中,日志文件是记录应用程序运行状态、错误信息以及调试信息的重要工具。...在实际项目中,我们应根据需求选择合适的日志级别、格式和存储方式,同时制定合理的日志清理策略,保持系统的健康运行。

    Poco 1.3.5 C++扩展库

    6. **日志记录**:Poco的 logging 模块提供了一种灵活的日志记录框架,支持多种日志记录器,如控制台、文件、syslog等,可自定义日志级别和格式,便于调试和监控应用。 7. **线程与并发**:Poco库提供了多线程和...

    POCO C++ Library

    **日志记录**:Logging库提供了灵活的日志记录设施,支持多种日志目标,如控制台、文件、网络等,并可以自定义日志级别和格式。 **线程和进程管理**:Poco::Thread和Poco::Process类提供了多线程和进程控制功能,...

    Qt中第三方日志库qslog的基本配置和使用详解示例程序

    1. **导入库**:在C++源文件中,首先需要包含qslog库的头文件,并启用所需的日志级别。例如,要使用INFO和ERROR级别,可以这样写: ```cpp #include QSLOG_LEVEL_SET(QSLOG_LEVEL_INFO | QSLOG_LEVEL_ERROR); ``` ...

    poco-1.7.7-all_c++开发库_shorter8s3_

    6. **日志记录**:Logging库提供了一种灵活的日志记录机制,允许开发者自定义日志级别、格式和输出目标,便于调试和监控应用状态。 7. **文件系统操作**:File和Path类提供了对文件系统的操作,如创建、删除、移动...

    C++插件平台库设计文档

    - **日志库 (Logging)**:管理系统的日志记录。 - **职责**:记录系统运行过程中的关键信息。 - **接口**:定义了日志记录的方法。 - **压缩解压库 (Lzo)**:提供数据的压缩和解压缩功能。 - **职责**:对数据...

    程序崩溃自动重启以及将未捕获到的异常写退出栈

    可以使用各种日志框架,如C++的log4cpp,Java的log4j或Python的logging模块,来实现这一功能。日志记录应该包含时间戳、异常类型、堆栈信息以及可能的环境变量,以提供全面的上下文信息。 为了实现这些功能,我们...

    写log的类,使用简单

    在IT行业中,日志记录(logging)是程序开发不可或缺的一部分,尤其对于调试、性能分析以及问题排查至关重要。本文将详细探讨一个名为"CLogFile"的简单高效日志类,该类适用于C++编程语言,旨在帮助初学者理解如何...

    socket TCP UDP多种协议切换,客户端和服务端任意切换

    可以使用标准库(如C++的`fstream`或Python的`logging`模块)或自定义函数来实现日志写入。在网络日志中,可能需要使用Socket将日志信息编码为字符串并发送到日志收集服务。 **sokit-1.3-win32-chs** `sokit-1.3-...

    poBase C++ portability layer-开源

    poBase 适用于各种需要跨平台兼容性的 C++ 项目,特别是那些涉及多线程处理、模块化架构或需要动态加载外部库的应用。例如,服务器软件、游戏引擎、多媒体处理工具等都可以从 poBase 中获益。 总结来说,poBase 是...

    linux环境下的网络爬虫

    2. **日志系统**: 使用`logging`模块记录爬虫运行状态,便于调试和问题排查。 八、法律合规性 1. **遵守robots.txt**: 尊重网站的爬虫规则,避免爬取禁止抓取的页面。 2. **数据版权与隐私**: 确保抓取和使用数据...

    mysql源代码

    5. **日志系统(Logging System)**:MySQL有二进制日志(用于复制)、错误日志、慢查询日志等功能,源代码中可以学习到日志的记录和回放机制。 6. **安全与权限(Security and Privileges)**:MySQL的用户认证、...

    POCO官方资料-20章PDF

    POCO库,全称“Portable Class Library”,是一个开源的C++类库,它包含了一系列轻量级、模块化的组件,尤其在嵌入式系统中表现出色。这个教程覆盖了从基础到高级的各种主题,通过20个章节的PDF文档,深入浅出地阐述...

    音乐播放器

    Qt5提供了丰富的日志和调试工具,如QDebug和Q Logging Framework,可以帮助开发者定位和修复问题。 总的来说,这个音乐播放器项目涵盖了Qt5 GUI编程、多媒体处理、文件操作、用户偏好设置等多个方面的技术,对于...

    YWZZ试验台带十次平均时间.zip

    3. **时间测量**:为了计算十次平均时间,源码可能包含了计时函数,如C++中的`std::chrono`库,Python中的`time`模块,或者是Java的`System.nanoTime()`。这些函数用于记录代码执行的起始和结束时间,从而计算出执行...

    leveldb 源码

    除了作为本地文件缓存,LevelDB也被广泛应用于其他场景,如NoSQL数据库(如Redis的模块)、日志记录、元数据存储以及各种分布式系统中的局部数据存储。 通过阅读和理解LevelDB的源码,开发者可以深入学习其内部...

    常用的jar包简单介绍

    10. **commons-logging.jar**: 提供了一个日志记录的抽象层,可以适配各种日志实现,如log4j、java.util.logging等。 11. **commons-pool.jar**: 提供对象池服务,可以用于数据库连接池、线程池等资源管理。 12. *...

    FsLibrary:可能有很多东西的基础库

    "FsLibrary-master" 这个文件名暗示了这是一个项目的主分支或者主版本,通常在开源项目中,"master" 分支代表了最新的稳定代码。下面我们将深入探讨 C++ 基础库的一些关键知识点,并尝试推测 FsLibrary 可能包含的...

Global site tag (gtag.js) - Google Analytics