LightDB 日志特性

日志系统原理

lightdb 通过管道机制实现其他进程和日志进程 syslogger 之间的通信,如图:

 

  1. postmaster 进程将  stderr  和  stdout  重定向到管道  syslogPipe 中;
  2. 通过  elog/ereport  写日志时,实际上是将日志信息写入到  stderr;
  3. syslogger 进程则循环从管道 syslogPipe 中读出,最终写到指定的日志文件中去;

日志协议格式定义如下:

typedef struct
{
	char		nuls[2]; /* always \0\0 */
	uint16		len;	 /* size of this chunk (counts data only) */
	int32		pid;	 /* writer's pid */
	char		is_last; /* last chunk of message? 't' or 'f' ('T' or 'F' for CSV case) */
	char		data[FLEXIBLE_ARRAY_MEMBER]; /* data payload starts here */
} PipeProtoHeader;

elog.h/elog.c 则提供了一套写日志的接口:

#define ereport(elevel, ...) ereport_domain(elevel, TEXTDOMAIN, __VA_ARGS__)
#define elog(elevel, ...) ereport(elevel, errmsg_internal(__VA_ARGS__)) /* 旧风格接口 */

而  ereport_domain 函数最终是通过  write_pipe_chunks 函数实现向管道中写入格式化的日志信息;

支持慢日志

LightDB 模块 auto_explain 支持将 JSON 格式的慢日志信息写入到单独的慢日志文件中,通过配置 auto_explain 的参数,满足慢日志条件的执行信息会自动写入到慢日志文件中;

慢日志和正常的日志文件以及 CSV 日志一样,支持自动清理,通过配置  lightdb_log_retention_age 来指定清理的范围;

------------------------------------------------------

更多内容请登录 LightDB官网 进行查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值