C++ 日志格式编写记录

本文介绍了C++中日志级别的概念,包括INFO、WARNING、ERROR和FATAL,以及如何利用预定义符号__FILE__、__FUNCTION__和__LINE__自动获取错误发生的位置信息。通过定义宏LOG简化日志记录,使得在代码中方便地记录带有详细位置的日志。
摘要由CSDN通过智能技术生成

日志级别: 分四级-> INFO、WARNING、ERROR、FATAL。
INFO: 表示正常的日志输出,一切按预期运行。
WARNING: 表示警告,该事件不影响服务器运行,但存在风险。
ERROR: 表示发生了某种错误,但该事件不影响服务器继续运行。
FATAL: 表示发生了致命的错误,该事件将导致服务器停止运行。
日志信息: 事件产生的日志信息。
错误发生文件名称: 事件在哪一个文件产生。
错误发生函数名称: 事件在哪一个函数产生。
行数: 事件在对应文件的哪一行产生。

通过C/C++语言中的预定义符号__FILE__和__FUNCTION__和__LINE__,分别可以获取当前文件的名称和当前的行数,但最好在调用Log函数时不用调用者显示的传入__FILE__和__FUNCTION__和__LINE__,因为每次调用Log函数时传入的这三个参数都是固定的。

注意:不能将__FILE__和__FUNCTION__和__LINE__设置为参数的缺省值,因为这样每次获取到的都是Log函数所在的文件名称和所在的行数。而宏可以在预处理期间将代码插入到目标地点,因此我们可以定义如下实现:

#include <iostream>

void Log(std::string level, std::string message, std::string file_name, std::string function, int line)
{
    std::cout << "[" << level << "][" << message << "][" << file_name << "][" << function << "][" << line << "]" << std::endl;
}


#define INFO    1
#define WARNING 2
#define ERROR   3
#define FATAL   4

#define LOG(level, message) Log(#level, message, __FILE__, __FUNCTION__, __LINE__)

void Test()
{
    LOG(INFO, "This is a test()");
}

int main()
{
    Test();
    LOG(WARNING, "This is a main()");

    getchar();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值