srslte add timestamp to console output

因为有需求给srslte运行时的终端输出添加时间戳, 所以有如下对源码的修改. 修改的内
容不是很难, 但是对需要修改代码的位置进行定位花了点时间.

A. srslte有一个logger类, 该类主要负责日志的记录和输出.

读程序一般从main函数开始, 这里从srsepc/src/main.cc开始. 从下图可以看出和
日志输出有关的类为stdout_loggerlog_filter
SRSLTE给控制台输出增加时间戳
起初并不确定哪一个类决定了输出终端的内容, 所以打算一个一个尝试.

B. 修改logger_stdout.h

  1. logger_stdout.h头文件可以看出, 有日志直接输出到了标准输出流. 所以对这
    部分进行修改.
    SRSLTE给控制台输出增加时间戳
  2. 查阅了c/c++处理时间的函数的相关资料.
    SRSLTE给控制台输出增加时间戳
  3. 修改logger_stdout.h代码
    SRSLTE给控制台输出增加时间戳
  4. 修改结果如下图所示
    SRSLTE给控制台输出增加时间戳
  5. 分析
    从修改结果可以看出, 时间戳添加到了日志当中, 而且是将日志输出到终端时才会显
    示, 将日志输出到文件并不会显示. 并且日志文件已经有了时间戳, 不过时区是UTC
    后面这个时区也需要修改为本地时区.

C. 修改log_filter

  1. 在浏览log_filter的源码时, 发现了一个函数log_filter::console(), 该函数也
    是直接打印到终端.
    SRSLTE给控制台输出增加时间戳\
  2. 修改log_filter::console()函数体
    SRSLTE给控制台输出增加时间戳
  3. 同时在log_filter源码里也找到了日志的时间变量, 用获取本地时间的函数替换获取
    UTC时间的函数.
    SRSLTE给控制台输出增加时间戳
    SRSLTE给控制台输出增加时间戳
  4. 修改后结果
    SRSLTE给控制台输出增加时间戳
    SRSLTE给控制台输出增加时间戳

D. 生成补丁

生成git patch, 以便在其他机器上部署.
SRSLTE给控制台输出增加时间戳
SRSLTE给控制台输出增加时间戳

相关文章: