1. 函数调用实现日志打印
调用如下
//实例化一个日志器 名字默认为"root"
Logger::ptr logger(new Logger);
//控制台输出器加入队列
logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
//实例化一个日志事件
LogEvent::ptr event(new LogEvent(logger, LogLevel::DEBUG,
__FILE__, __LINE__, 0, GetThreadId(), GetCoroutineId(), time(0)));
//以"流"的方式追加文本内容
event->getSS() << "hello log";
//按序打印日志信息
logger->log(LogLevel::DEBUG, event);
结果如下:
nmoek@nmoek-virtual-machine:~/kit_server_project$ bin/test
[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) << “有致命错误”;
- **运行结果:**
![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)
- **加上文件输出后调用如下:**
```cpp
//实例化一个日志器
Logger::ptr logger(new Logger);
//控制台输出器加入队列
logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
//文件输出器加入队列
logger->addAppender(LogAppender::ptr(new FileLogAppender("./test_log.txt")));
KIT_LOG_DEBUG(logger) << "hello log";
KIT_LOG_FATAL(logger) << "有致命错误";
- 运行结果:
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”, “成功”);
- **运行结果如下:**<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)
<a name="ynC7F"></a>
# 3. 日志级别隔离测试
日志级别:`UNKONW < DEBUG < INFO < WARN < ERROR < FATAL`
对应的输出器 `LogAppender`只能输出大于等于其级别的日志事件。<br />如:<br />级别为**DEBUG**的`LogAppender`可以输出DEBUG、INFO、WARN、ERROR、FATAL级别的日志事件;级别为**ERROR**的`LogAppender`只能输出ERROR、FATAL级别的日志事件。<br />
- **调用如下**
```cpp
//实例化一个日志器
Logger::ptr logger(new Logger);
//控制台输出器加入队列
logger->addAppender(LogAppender::ptr(new StdoutLogAppender));
//文件输出器加入队列 默认级别:DEBUG
logger->addAppender(LogAppender::ptr(new FileLogAppender("./test_log.txt")));
//文件输出器加入队列 设置级别:ERROR、指定模板
LogAppender::ptr fmt_file_app(new FileLogAppender("./fmt_test_log.txt"));
LogFormatter::ptr fmt(new LogFormatter("[%p]%T%d%T%m%T%n"));
fmt_file_app->setFormatter(fmt);
fmt_file_app->setLevel(LogLevel::ERROR);
logger->addAppender(fmt_file_app);
KIT_LOG_DEBUG(logger) << "hello log";
KIT_LOG_FATAL(logger) << "有致命错误";
KIT_LOG_FMT_ERROR(logger, "fmt error test: %s", "成功");
KIT_LOG_WARN(logger) << "warn log";
- 运行结果如下:
一个实验组: 匿名LogAppender
| 级别:DEBUG | 输出位置: 文件"./test_log.txt"
一个对照组: mt_file_appLogAppender
| 级别:ERROR | 输出位置:文件"./fmt_test_log.txt"
可以明显的看到,级别为DEBUG的控制台输出器、级别为DEBUG的文件输出器所有日志事件都输出了。
但是,级别为ERROR的文本输出器只输出了ERROR、FATAL的日志事件