Log模块见雏形了,之所以最开始写Log模块,主要是考虑先写好了这个模块,以后在开发其他模块时,可以调用Log模块很容易的输出Log信息,方便开发过程中调试程序。Log模块大致如下:
在程序中调用Log模块输出日志信息,Log模块会根据Log等级判断是不是要把log信息输出到各个监听器,Log模块从配置模块读取配置信息,来设置最低输出的log等级和监听器。
各个监听器分别把信息输出到控制台,Log服务器,Log文件,系统日志等。
使用这个模块还是非常简单的,示例代码:
- #include "god/log.h"
- using namespace std;
- using namespace G;
- static Logger::ptr g_loggera = Log::find("ModuleA");
- static Logger::ptr g_loggerb = Log::find("ModuleB");
- int main(int argc, char *argv[]) {
- GOD_LOG_FATAL(g_loggera) << "Fatal,libgod";
- GOD_LOG_FATAL(g_loggerb) << "Fatal,嘿嘿";
- GOD_LOG_ERROR(g_loggera) << "Error,libgod";
- GOD_LOG_ERROR(g_loggerb) << "Error,嘿嘿";
- GOD_LOG_WARNING(g_loggera) << "Warning,libgod";
- GOD_LOG_WARNING(g_loggerb) << "Warning,嘿嘿";
- GOD_LOG_INFO(g_loggera) << "Info,libgod";
- GOD_LOG_INFO(g_loggerb) << "Info,嘿嘿";
- GOD_LOG_TRACE(g_loggera) << "Trace,libgod";
- GOD_LOG_TRACE(g_loggerb) << "Trace,嘿嘿";
- GOD_LOG_DEBUG(g_loggera) << "Debug,libgod";
- GOD_LOG_DEBUG(g_loggerb) << "Debug,嘿嘿";
- return 0;
- }
运行结果:
- ./bin/log.exe
- 2012-Nov-16 16:04:57.425740 FATAL ModuleA src/log.cpp:10 Fatal,libgod
- 2012-Nov-16 16:04:57.426163 FATAL ModuleB src/log.cpp:11 Fatal,嘿嘿
- 2012-Nov-16 16:04:57.426231 ERROR ModuleA src/log.cpp:13 Error,libgod
- 2012-Nov-16 16:04:57.426390 ERROR ModuleB src/log.cpp:14 Error,嘿嘿
- 2012-Nov-16 16:04:57.426460 WARNING ModuleA src/log.cpp:16 Warning,libgod
- 2012-Nov-16 16:04:57.426516 WARNING ModuleB src/log.cpp:17 Warning,嘿嘿
- 2012-Nov-16 16:04:57.426571 INFO ModuleA src/log.cpp:19 Info,libgod
- 2012-Nov-16 16:04:57.426626 INFO ModuleB src/log.cpp:20 Info,嘿嘿