**tests/test.cpp**文件中

1. 函数调用实现日志打印

  • 调用如下

    1. //实例化一个日志器 名字默认为"root"
    2. Logger::ptr logger(new Logger);
    3. //控制台输出器加入队列
    4. logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
    5. //实例化一个日志事件
    6. LogEvent::ptr event(new LogEvent(logger, LogLevel::DEBUG,
    7. __FILE__, __LINE__, 0, GetThreadId(), GetCoroutineId(), time(0)));
    8. //以"流"的方式追加文本内容
    9. event->getSS() << "hello log";
    10. //按序打印日志信息
    11. logger->log(LogLevel::DEBUG, event);
  • 结果如下:

    1. nmoek@nmoek-virtual-machine:~/kit_server_project$ bin/test
    2. [DEBUG] </home/nmoek/kit_server_project/tests/test.cpp:20> 2021-11-25 14:18:08 68542 0 root hello log

2. 测试宏调用日志打印

2.1 固定日志级别输出日志内容

  • 调用如下: ```cpp //实例化一个日志器 名字默认为”root” Logger::ptr logger(new Logger);

//控制台输出器加入队列 logger->addAppender(LogAppender::ptr(new StdoutLogAppender));

//使用宏函数 KIT_LOG_DEBUG(logger) << “hello log”; KIT_LOG_FATAL(logger) << “有致命错误”;

  1. - **运行结果:**
  2. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/25460685/1637844961594-0271929e-3a47-4224-aa93-be1a97297e17.png#clientId=u031973e0-08f1-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=52&id=ude3189d9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=52&originWidth=936&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10353&status=done&style=none&taskId=u4fb38877-abc3-4e60-9f94-9a684b684cb&title=&width=936)
  3. - **加上文件输出后调用如下:**
  4. ```cpp
  5. //实例化一个日志器
  6. Logger::ptr logger(new Logger);
  7. //控制台输出器加入队列
  8. logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
  9. //文件输出器加入队列
  10. logger->addAppender(LogAppender::ptr(new FileLogAppender("./test_log.txt")));
  11. KIT_LOG_DEBUG(logger) << "hello log";
  12. KIT_LOG_FATAL(logger) << "有致命错误";
  • 运行结果:

image.png

2.2 带参日志输出日志内容

  • 调用如下: ```cpp //实例化一个日志器 Logger::ptr logger(new Logger);

    //控制台输出器加入队列 logger->addAppender(LogAppender::ptr(new StdoutLogAppender));

KIT_LOG_FMT_DEBUG(logger, “fmt debug test: %d”, 666); KIT_LOG_FMT_ERROR(logger, “fmt error test: %s”, “成功”);

  1. - **运行结果如下:**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/25460685/1637845011890-bc88b052-1a61-4b65-9ac5-f63d4695ea2f.png#clientId=u031973e0-08f1-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=43&id=ucc975fca&margin=%5Bobject%20Object%5D&name=image.png&originHeight=51&originWidth=939&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10318&status=done&style=none&taskId=uc6231e5e-b76b-4d1f-af20-a9cb2ecb336&title=&width=786)
  2. <a name="ynC7F"></a>
  3. # 3. 日志级别隔离测试
  4. 日志级别:`UNKONW < DEBUG < INFO < WARN < ERROR < FATAL`
  5. 对应的输出器 `LogAppender`只能输出大于等于其级别的日志事件。<br />如:<br />级别为**DEBUG**的`LogAppender`可以输出DEBUGINFOWARNERRORFATAL级别的日志事件;级别为**ERROR**的`LogAppender`只能输出ERRORFATAL级别的日志事件。<br />
  6. - **调用如下**
  7. ```cpp
  8. //实例化一个日志器
  9. Logger::ptr logger(new Logger);
  10. //控制台输出器加入队列
  11. logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
  12. //文件输出器加入队列 默认级别:DEBUG
  13. logger->addAppender(LogAppender::ptr(new FileLogAppender("./test_log.txt")));
  14. //文件输出器加入队列 设置级别:ERROR、指定模板
  15. LogAppender::ptr fmt_file_app(new FileLogAppender("./fmt_test_log.txt"));
  16. LogFormatter::ptr fmt(new LogFormatter("[%p]%T%d%T%m%T%n"));
  17. fmt_file_app->setFormatter(fmt);
  18. fmt_file_app->setLevel(LogLevel::ERROR);
  19. logger->addAppender(fmt_file_app);
  20. KIT_LOG_DEBUG(logger) << "hello log";
  21. KIT_LOG_FATAL(logger) << "有致命错误";
  22. KIT_LOG_FMT_ERROR(logger, "fmt error test: %s", "成功");
  23. KIT_LOG_WARN(logger) << "warn log";
  • 运行结果如下:

一个实验组: 匿名LogAppender | 级别:DEBUG | 输出位置: 文件"./test_log.txt"
一个对照组: mt_file_appLogAppender | 级别:ERROR | 输出位置:文件"./fmt_test_log.txt"

可以明显的看到,级别为DEBUG的控制台输出器、级别为DEBUG的文件输出器所有日志事件都输出了。
但是,级别为ERROR的文本输出器只输出了ERROR、FATAL的日志事件
image.png