日志信息

此文档主要介绍 TuGraph 的日志功能。

1.简介

TuGraph 保留两种类型的日志:服务器日志和审计日志。服务器日志记录人为可读的服务器状态信息,而审核日志维护服务器上执行的每个操作加密后的信息。

2.服务器日志

2.1.服务器日志分类

当前服务器日志分为三类,general logdebug logquery log

general log面向普通用户,包含用户关注的数据库启动关闭时的关键信息,如数据库启动时的配置信息,服务监听的端口以及是否成功启动或关闭等信息,可以直观的看到数据库是否正在运行。

debug log面向数据库开发者,包含开发者关注的数据库运行过程中产生的debug相关信息,如数据库收到的网络请求,query的执行过程等,可以协助开发者进行开发,并可以通过verbose配置项控制日志详细程度。

(待实现)query log面向业务开发人员,包含业务开发者关注的每一次数据库执行的query语句以及执行该语句时数据库的性能相关信息,如查询时间等。可以通过设定时间阈值的方式过滤执行时间低于指定值的query,方便业务开发者进行性能分析。

2.2.服务器日志配置项

服务器日志的输出位置可以通过log_dir配置指定。服务器日志中debug log的详细程度可通过verbose配置项指定。

log_dir配置项默认为空。若log_dir为空,则所有日志会输出到控制台。若手动指定log_dir,则会在对应路径下生成如下日志文件夹结构。

.
├── debug.log
├── general.log
├── query.log(TODO)
└── history_logs
    ├── debug_logs
    ├── general_logs
    └── query_logs(TODO)

general log日志记录在genreal.log文件中。debug log日志记录在debug.log文件中。query log日志记录在query.log文件中。 单个日志文件最大大小为64mb,在达到规定的最大文件大小后会被回收入history_logs文件夹中,general.log回收进入general_logs文件夹,debug.log回收进入debug_logs文件夹中。

verbose配置项控制了debug log的详细程度,从粗到细分为0, 1, 2三个等级。默认等级为2,此等级下,日志记录最详细,服务器将打印DEBUG及以上等级的全部日志信息,同时附带上打印这条日志信息的[文件名:函数名:行号],便于debug。等级为1时,服务器将仅打印INFO等级及以上的主要事件的日志。等级为0时,服务器将仅打印ERROR等级及以上的错误日志。

2.3.服务器日志输出宏使用示例

如果开发者在开发过程中希望在代码中添加日志,可以参考如下示例

#include "tools/lgraph_log.h" //添加日志依赖


void LogExample() {
    // 数据库启动阶段已经对日志模块进行了初始化,开发者只需直接调用宏即可
    // 日志等级分为TRACE, DEBUG, INFO, WARNING, ERROR, FATAL六个等级

    GENERAL_LOG(INFO) << "This is a info level general log message."; // general log的输出宏

    DEBUG_LOG(ERROR) << "This is a error level debug log message."; // debug log的输出宏
}

更多用法可以参考test/test_lgraph_log,cpp中的日志宏的使用方法

3.审计日志

审核日志记录每个请求和响应,以及发送请求的用户以及收到请求的时间。审核日志只能是打开或关闭状态。可以使用 TuGraph 可视化工具和 REST API 查询结果。