srsLTE add timestamp to console output
srslte add timestamp to console output
因为有需求给srslte运行时的终端输出添加时间戳, 所以有如下对源码的修改. 修改的内
容不是很难, 但是对需要修改代码的位置进行定位花了点时间.
A. srslte有一个logger类, 该类主要负责日志的记录和输出.
读程序一般从main函数开始, 这里从srsepc/src/main.cc开始. 从下图可以看出和
日志输出有关的类为stdout_logger和log_filter
起初并不确定哪一个类决定了输出终端的内容, 所以打算一个一个尝试.
B. 修改logger_stdout.h
- 从
logger_stdout.h头文件可以看出, 有日志直接输出到了标准输出流. 所以对这
部分进行修改. - 查阅了
c/c++处理时间的函数的相关资料. - 修改
logger_stdout.h代码 - 修改结果如下图所示
- 分析
从修改结果可以看出, 时间戳添加到了日志当中, 而且是将日志输出到终端时才会显
示, 将日志输出到文件并不会显示. 并且日志文件已经有了时间戳, 不过时区是UTC
后面这个时区也需要修改为本地时区.
C. 修改log_filter类
- 在浏览
log_filter的源码时, 发现了一个函数log_filter::console(), 该函数也
是直接打印到终端.\
- 修改
log_filter::console()函数体 - 同时在
log_filter源码里也找到了日志的时间变量, 用获取本地时间的函数替换获取UTC时间的函数. - 修改后结果
D. 生成补丁
生成git patch, 以便在其他机器上部署.