举例
在config_opts.h中的SUBSYS(ms, 0, 5)定义了ceph_debug_ms的日志级别为log_level=0,gather_level=5;
ms模块使用ldout(msgr->cct, 1) << __func__ << " start" << dendl;打印日志,其中1表示本条日志的log_level=gather_level=1;
为了方便描述分别表示为:
ms.log_level = 0;
ms.gather_level = 5;
ldout.log_level = 1;
ldout.gather = 1;
因为ms.gather_level > ldout.gather,所以本条日志会记录在内存中。
因为ms.log_level < ldout.log_level,所以本条日志不会记录到日志文件中。
但是Ceph中提供了ceph daemon type.id log dump命令可以把内存中的日志刷入日志文件中,并且不受log_level影响。
设置日志级别
修改配置文件
[global]
debug ms = 1/5 #设置log_level=1,gather_level=5
[mon]
debug mon = 20 #设置log_level=20,gather_level=20
[osd]
debug osd = 1/5
[client]
debug rbd = 10
或者使用命令行
ceph tell osd.0 injectargs --debug-osd 0/5 #通过mon进行
ceph daemon osd.0 config set debug_osd 0/5 #通过Unix domain socket