首批通过分布式安全可靠测评,为关键业务系统打造
日志
更新时间:2026-04-10 11:58:35
observer 的日志存放在 observer 的安装目录的 log 目录下面,分为三种日志 observer.log、rootservice.log 和 election.log,分别对应 observer 日志、RS 日志和选举日志。
对于每一种日志,如 observer.log,按照文件名大致分为以下几种:
observer.log
observer.log.20210901123456
observer.log.wf
observer.log.wf.20210901123456
当 observer.log 达到 256M 时,会将其 rename 为第二种日志,后面的数字为时间戳。wf 日志的含义见下文 enable_syslog_wf 配置项。
日志格式
这里以一条日志举例说明。
[2021-09-01 11:31:18.605433] INFO [STORAGE] ob_pg_sstable_garbage_collector.cpp:170 [38715][0][Y0-0000000000000000-0-0] [lt=15] [dc=0] do one gc free sstable by queue(ret=0, free sstable cnt=0)
对应的日志信息如下:
[时间] 日志级别 [所属模块] 文件:行号 [线程id][0][trace_id] [lt=上条日志耗费时间(微秒)][丢弃日志数量]
日志级别
从低到高有 7 种,DEBUG、TRACE、WDIAG、EDIAG、INFO、WARN、ERROR。
其中 ERROR 日志比较特殊,会将打日志时所在的堆栈打印出来(需要通过符号表解析)。
注意
开启 DEBUG 日志将耗费大量资源,在较新版本中,DEBUG 日志在 release 编译下会自动去掉,即使开启也无法生效。
所属模块
有很多种,可以大致区分日志所属模块。
线程 ID
打印日志所在的线程的 ID,可以用于跟踪对应线程的行为,对排查线程 Hang 住、超时等问题比较有用。
trace_id
OceanBase 数据库内部的 SQL 级别的 ID,默认为 Y0-0000000000000000-0-0,可以通过 trace_id 来找到一条 SQL 的执行过程,是排查问题的重要手段。
相关配置项
以下所有配置项均为集群级别,需要在系统租户下使用。可以通过以下方法修改。
obclient> ALTER SYSTEM SET enable_syslog_recycle = False;
enable_syslog_recycle
用于设置是否打开记录启动前的旧日志的开关,默认为 False。与
max_syslog_file_count配合使用,决定回收逻辑是否考虑旧的日志文件。开启后将会自动删除多余的日志,具体逻辑详见 max_syslog_file_count。
enable_syslog_wf
是否启用 wf 日志,默认为 True。
开启后会每种日志中 WARN 级别以上的日志复制到 wf 日志中,如 observer.log.wf。
enable_async_syslog
是否启用异步写日志功能,默认为 True。
关闭后将使用同步方式写日志,可以保证 observer 宕机前写完所有日志,但性能较差,不建议关闭。
max_syslog_file_count
每种日志的最大日志数量,默认为 0,当且仅当该配置项大于 0 且 enable_syslog_recycle 为 True 时生效。
注意
尽管该配置项的范围是 [0, +∞),但 observer 源码中约束了该值不能超过
MAX_LOG_FILE_COUNT,即 10240,超过时依然可以设置成功但实际生效值为 MAX_LOG_FILE_COUNT。syslog_io_bandwidth_limit
日志限流量,默认为 30M。
注意
当日志打印速度超过限制时,将打印以下信息。
REACH SYSLOG RATE LIMITsyslog_level
打印的日志的最低级别,日志级别见上文,默认为 WDIAG。