ceph log内容解析

log内容构造

如osd的一条log


分别表示 时间戳 线程id 日志等级 子模块 内容实体

剖析源码实现

每条log都是由一个Entry构成
定义在src/log/entry.h中

Entry(short pr, short sub) :
    m_stamp(clock().now()), // 打印日志时的时间戳
    m_thread(pthread_self()), // 打印日志的线程ID
    m_prio(pr), // 日志的优先级值(值越大,优先级越低)
    m_subsys(sub) // 子模块ID,如osd
  {}


ldout是带前缀的dout_impl
定义在src/common/dout.h中

#define ldout(cct, v)  dout_impl(cct, dout_subsys, v) dout_prefix

dout和ldout类似,也是带前缀的dout_impl,只有个别模块有使用,如src/mds/MDBalancer.cc中

#undef dout
#define dout(lvl) \
  do {\
    auto subsys = ceph_subsys_mds;\
    if ((dout_context)->_conf->subsys.should_gather(ceph_subsys_mds_balancer, lvl)) {\
      subsys = ceph_subsys_mds_balancer;\
    }\
    dout_impl(dout_context, ceph::dout::need_dynamic(subsys), lvl) dout_prefix
#undef dendl
#define dendl dendl_impl; } while (0)

学习链接:https://daimajiaoliu.com/daima/485fd296c900408

上一篇:深拷贝一个json,可以循环调用


下一篇:密码学原理精解【9】-迭代密码