muduo网络库学习笔记(十):base库之 Logging

工作流程

首先使用宏定义写日志

#define LOG_TRACE if (muduo::Logger::logLevel() <= muduo::Logger::TRACE) \
  muduo::Logger(__FILE__, __LINE__, muduo::Logger::TRACE, __func__).stream()
#define LOG_DEBUG if (muduo::Logger::logLevel() <= muduo::Logger::DEBUG) \
  muduo::Logger(__FILE__, __LINE__, muduo::Logger::DEBUG, __func__).stream()
#define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) \
  muduo::Logger(__FILE__, __LINE__).stream()
#define LOG_WARN muduo::Logger(__FILE__, __LINE__, muduo::Logger::WARN).stream()
#define LOG_ERROR muduo::Logger(__FILE__, __LINE__, muduo::Logger::ERROR).stream()
#define LOG_FATAL muduo::Logger(__FILE__, __LINE__, muduo::Logger::FATAL).stream()
#define LOG_SYSERR muduo::Logger(__FILE__, __LINE__, false).stream()
#define LOG_SYSFATAL muduo::Logger(__FILE__, __LINE__, true).stream()

举例来说,当我们使用 LOG_INFO << "info…" 时,

相当于用__FILE__ (文件的完整路径和文件名)与 LINE(当前行号的整数 )初始化了一个Logger类,

出错时间、线程、文件、行号初始化号,接着将"info..."输入到缓冲区,在Logger生命周期结束时调用析构函数输出错误信息。

if (muduo::Logger::logLevel() <= muduo::Logger::TRACE)

这代表我们使用该LOG_INFO宏时会先进行判断,如果级别大于INFO级别,后面那句不会被执行,也就是不会打印INFO级别的信息。

整个调用过程:Logger --> impl --> LogStream --> operator<< FilxedBuffer --> g_output --> g_flush

 

日志级别

TRACE

指出比DEBUG粒度更细的一些信息事件(开发过程中使用)

DEBUG

指出细粒度信息事件对调试应用程序是非常有帮助的。(开发过程中使用)

INFO

表明消息在粗粒度级别上突出强调应用程序的运行过程。

WARN

系统能正常运行,但可能会出现潜在错误的情形。

ERROR

指出虽然发生错误事件,但仍然不影响系统的继续运行。

FATAL

指出每个严重的错误事件将会导致应用程序的退出。

Logger.h

#ifndef MUDUO_BASE_LOGGING_H
#define MUDUO_BASE_LOGGING_H
​
#include "LogStream.h"
#include "Timestamp.h"
​
namespace muduo{
class TimeZone;
class Logger{
public:
    /*
    级别类型
    muduo使用枚举的方式指出了输出错误信息的形式。
    其中TRACE,DEBUG用于调试,INFO,WARN,ERROR,FATAL在程序运行过程中输出,警告的程度依次上升,
    出现FATAL时程序将强制退出。NUM_LOG_LEVELS是这个枚举结构体中错误形式的数目,为6。
    */
    enum LogLevel{
        TRACE,
        DEBUG,
        INFO,
        WARN,
        ERROR,
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值