该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。
其教学视频见:[C++高级教程]从零开始开发服务器框架(sylar)
上一篇:C++服务器框架开发3——协程与线程的简单理解/并发与并行
C++服务器框架开发4——日志系统logger
- 目前进度
- .cpp与.cc
目前进度
目前学习完第二个视频,视频up对og.h中的logger的几个成员函数进行了定义。
要点:
-
在log.h中声明了5个写不同级别日志的函数,1个log函数,1个增加和1个删除日志输出目标的函数。
-
在log.h中声明了几个变量,如下图。
-
在log.cc中定义这些函数,如下图。
添加addAppender():加入列表m_appenders中。
删除delAppender():for循环查找到该对象,然后将其从m_appenders中删除。
写日志logger::log():检查该级别是否大于或等于设定的级别,是写日志,否则不写。其中的i->log()是调用了Appender的成员函数log()。
Logger::debug()、Logger::info()、Logger::warn()、Logger::error()、Logger::fatal():5种级别的写日志函数,它们调用logger::log()来实现写日志,logger::log()根据得到的参数level来决定是否进行写日志。注:这5个函数中,实际上应该是写错了,里面的dubug应该改为log,即调用上面那个logger::log()。
.cpp与.cc
我之前学习C++基础以及刷题时,写的都是.cpp文件,今天学这个项目,发现原作者定义的是.cc文件。
查了一下,发现原来是因为以前C++的源文件是用.c的,这会导致有些编译器无法区分该文件时C语言的还是C++语言的。后来就出现了.c++ .cc .cxx .C。由于某些编译器不支持大小写,有些编译器不支持符号+,所以.c++ 和.C适用性不广。而在Dos和Windows中,cpp用的比较广(c plus plus)。
总结:如果编译器能编译成功,用哪种后缀都是可以的。