`

C++11应用:规范日志打印

 
阅读更多
#pragma once

#include <chrono>

static std::string getTimeStr()
{
    std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds> tpNow = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now());
    auto tmpNow=std::chrono::duration_cast<std::chrono::milliseconds>(tpNow.time_since_epoch());
    uint64_t milli = tmpNow.count();
    milli += (uint64_t)8*60*60*1000;//add to beijing time zone.
    auto mTime = std::chrono::milliseconds(milli);
    auto tp=std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds>(mTime);
    auto tt = std::chrono::system_clock::to_time_t(tp);
    std::tm* info = std::gmtime(&tt);

    char tmp[27] = {0};
    sprintf(tmp, "%04d-%02d-%02d %02d:%02d:%02d.%03ld", info->tm_year+1900, info->tm_mon+1, info->tm_mday, info->tm_hour, info->tm_min, info->tm_sec, milli%1000);
    return tmp;
} 

#define DEBUG_FLAG 

#ifdef DEBUG_FLAG
	#define MY_LOGD(format, ...) {printf("%s: D/%s[%s]: ", getTimeStr().c_str(), basename(__FILE__), __func__);printf(format, ##__VA_ARGS__);printf("\n");} 
#else
	#define MY_LOGD(format, ...)
#endif

#define MY_LOGE(format, arg...) {printf("%s: E/%s[%s]: ", getTimeStr().c_str(), basename(__FILE__), __func__);if(strlen(format)>0){printf(format, ##arg);}printf("\n");}

#define FUNCTION_NAME               MY_LOGD(" ");
#define FUNCTION_IN                 MY_LOGD("+")
#define FUNCTION_OUT                MY_LOGD("-")

 

分享到:
评论

相关推荐

    vc++ c++ mfc 日志 log 记录

    在开发Windows应用程序时,VC++、C++以及MFC(Microsoft Foundation Classes)是常见的编程工具和技术。日志记录(log recording)是软件开发中...在实际应用中,根据项目需求和团队规范调整日志系统,以达到最佳效果。

    c++开源日志库GLOG

    C++开源日志库GLOG是由Google开发的一款强大的日志处理框架,它的设计目标是提供一个灵活、高效且易于使用的日志系统,适用于各种规模的软件项目。GLOG库不仅支持基本的日志输出,还提供了丰富的特性,如日志级别...

    打印测试资料c++代码

    在IT行业中,编程语言C++是一种强大的工具,尤其在系统编程、高性能计算和嵌入式领域有着广泛的应用。本文将深入探讨"打印测试资料c++代码"这一主题,旨在为开发者提供全面理解打印机驱动和相关程序代码的知识。 ...

    QT下实现记录日志类封装调用

    QT框架是Qt公司开发的一种跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面应用、移动应用以及嵌入式设备开发。在QT下实现记录日志类的封装调用,是一个重要的实践过程,它可以帮助开发者更好地管理和追踪...

    C++程序设计代码 是一些基础代码 简单实用

    11. **代码规范**:良好的编程风格和注释可以使代码更易读、易懂和易维护。遵循一定的命名规则、使用空格和缩进、添加注释都是编写高质量C++代码的关键。 以上就是对标题和描述中涉及的C++程序设计基础知识点的详解...

    c++课程设计-职工信息管理系统

    调试技巧包括使用断点、单步执行、查看变量值、打印日志等,以找出并修复问题。VC++6.0提供的调试工具可以有效地帮助我们进行这些操作。 最后,良好的编程习惯和文档记录也是项目成功的关键。清晰的代码结构、有...

    多线程编写同一个txt日志

    综上所述,多线程编写txt日志涉及的主要知识点包括线程同步、临界代码区的使用、数组模板的灵活应用以及错误消息的规范打印。通过理解和掌握这些概念,开发者能够在多线程环境中创建稳定、高效的日志系统。

    QT实现配置文件设置和日志的存储,包括时间、文件名和时间(VS2019编译环境)

    QT框架是C++开发中广泛使用的库,尤其在创建图形用户界面(GUI)应用程序时。在QT中实现配置文件设置和日志存储是一项常见的任务,它有助于管理和跟踪应用程序的运行状态,以及允许用户自定义软件行为。在VS2019编译...

    蓝桥杯国赛题之C++报时助手.zip

    9. **代码组织**:良好的代码结构和命名规范是提高代码可读性和维护性的关键,遵循一定的编程风格,如C++的STL风格或者Google编程风格指南。 10. **文档编写**:编写清晰的README文件介绍项目的用途、安装步骤、...

    Visual C++ 2005数据库开发经典案例

    在软件开发领域,Visual C++ 2005是一款强大的编程工具,它提供了丰富的功能和接口,使得开发者能够创建高效的桌面应用程序,特别是在数据库应用方面。本案例聚焦于使用Visual C++ 2005开发一个小区物业管理系统,...

    学生通讯信息管理系统C++

    总的来说,“学生通讯信息管理系统C++”项目旨在锻炼学生的实际编程能力和系统设计思维,通过这个项目,他们可以深入理解C++的面向对象特性,并将所学知识应用于实际问题中,从而提升自己的专业素养。

    EPSON OPOS打印驱动

    EPSON OPOS打印驱动是一种专为爱普生(EPSON)品牌打印机设计的开放标准接口程序,它基于OPOS(Open POS Industry Standard)规范,旨在提供一个统一的、跨平台的接口,使得在不同类型的零售和餐饮系统中能够方便地...

    Log_Encapsulation_demo.rar

    在实际应用中,这样的日志封装类可以极大地提高开发效率,简化代码结构,同时保证日志管理的规范性和可维护性。它可以帮助开发者快速定位问题,跟踪系统状态,尤其在分布式系统或高并发环境中,良好的日志记录系统是...

    基于Visual C++的物资管理系统设计与实现

    Visual C++是微软公司推出的一款集成开发环境,它集成了编译器、调试器等开发工具,支持Windows应用程序的开发。C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的...

    VC++虚拟打印机源码v1.0

    《VC++虚拟打印机源码v1.0》是一款在2000年开发完成的、基于C++编程语言的虚拟打印机源代码,其中融入了一小部分DELPHI编写的组件。这款软件允许用户在Windows 2000/XP/20003操作系统环境下,将各种应用程序中的内容...

    professional Cpp

    综上所述,《Professional C++》这本书覆盖了从C++基础到高级编程技术的各个方面,适合希望深入了解C++语言及其在实际项目中应用的程序员阅读。无论是初学者还是有一定经验的开发人员,都能从中获得有价值的知识和...

    android笔记

    - **Android Log**:日志打印类,如`Log.v()`用于打印详细级别的日志。 - **Traceview**:分析应用性能,记录被调用的方法及其调用次数。 #### 三、高级开发技巧 **3.1 本地代码支持** 尽管最初版本不支持使用C/...

    log4j详解(超详细)

    Log4j作为一款流行的开源日志组件,由Apache软件基金会开发,广泛应用于各种应用环境,包括Windows、Unix等操作系统,以及Java、C++、.NET、PL/SQL等多种编程语言环境。 #### 核心知识点详解: ##### 1. 日志记录...

    Android应用程序开发36技

    34. **Android Studio调试技巧**:熟练运用断点、日志打印、性能分析等调试工具,解决开发中的问题。 35. **持续集成与持续部署(CI/CD)**:自动化构建、测试和发布流程,确保代码质量和快速迭代。 36. **App性能...

Global site tag (gtag.js) - Google Analytics