Redis开发:运行单元测试时如何添加并启用调试日志信息
Redis单元测试时自定义服务端日志不显示的解决方法
你遇到的日志不显示的核心原因是Redis测试框架默认会将服务端日志重定向到临时文件,不会直接输出到运行测试的终端,同时默认的日志级别配置也可能过滤LL_NOTICE级别的日志。你可以用以下几种方法解决:
方法1:查看测试生成的临时日志文件
- 运行
./runtest时,开头会输出测试实例的临时目录路径,格式类似Starting test server at port 11111, tmpdir: /tmp/redis_test.XXXXXX - 进入对应临时目录,打开
redis.log文件即可查看到你添加的serverLog输出内容
方法2:手动启动Redis实例单独跑测试
这种方法可以让日志直接输出到终端,调试更方便:
- 先编译修改后的代码:
make - 启动Redis服务端,指定日志输出到标准输出,级别匹配你用的LL_NOTICE:
./src/redis-server --loglevel notice --logfile stdout - 新开一个终端窗口,运行测试时指定连接你刚启动的本地实例:
./runtest --single unit/acl --host 127.0.0.1 --port 6379
- 此时你添加的服务端日志会直接打印在启动Redis实例的终端窗口
方法3:修改测试框架配置直接输出日志
你可以直接修改tests/support/server.tcl文件里的服务端启动配置,添加以下两行:
lappend config "logfile stdout" lappend config "loglevel notice"
修改后再运行./runtest --single unit/acl,服务端日志会直接输出到当前运行测试的终端。
更便捷的临时调试方法
如果只是临时调试查看变量值,可以直接用标准错误输出打印,不需要走Redis的serverLog体系,日志会直接写入服务端错误流,更容易查看:
#include <stdio.h> // 你需要调试的代码位置添加 fprintf(stderr, "调试输出:目标变量的值为%d\n", target_var);
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

