Aerospike C客户端有一个日志设施,用于记录内部日志信息。默认情况下,日志记录器将日志信息写到stderr。但应用可更改日志的详细程度或提供一个客户化方法来记录日志信息。
若应用需要修改日志信息详细程度,可使用as_log_set_level()设置不同的日志级别:.
as_log_set_level(&as->log, AS_LOG_LEVEL_DEBUG);
日志级别有:
AS_LOG_LEVEL_OFF
AS_LOG_LEVEL_ERROR
AS_LOG_LEVEL_WARN
AS_LOG_LEVEL_INFO
AS_LOG_LEVEL_DEBUG
AS_LOG_LEVEL_TRACE
除了设置日志级别,应用可提供一个客户化日志回调用函数(使用as_log_set_callback()设置), 来根据应用的需要来重定向、过滤或者格式化日志信息。
日志回调函数的型构是:
typedef bool (*as_log_callback)(as_log_level level, const char *func, const char *file, uint32_t line, const char *fmt, ...);
参数解释如下:
level
— 日志信息级别。func
— 日志信息被记录位置的函数名称。file
— 日志信息被记录位置的文件名称。line
— 日志信息被记录位置的文件行号。fmt
— 日志信息格式化串。...
— 格式化串对应的参数。 下面是一个客户化日志回调函数的例子:
bool my_log_callback(as_log_level level, const char *func, const char *file, uint32_t line, const char *fmt, ...) { char msg[1024] = {0}; va_list ap; va_start(ap, fmt); vsnprintf(msg, 1024, fmt, ap); msg[1023] = '\0'; va_end(ap); fprintf(stderr, "[%s:%d][%s] %d - %s\n", file, line, func, level, msg); return true; }
上面这个客户化函数可以如下进行设置使用:
as_log_set_level(AS_LOG_LEVEL_INFO); as_log_set_callback(as_client_log_callback);
若使用3.0.85及以下旧版本C客户端,则:
as_log_set_level(&as->log, AS_LOG_LEVEL_INFO); as_log_set_callback(&as->log, as_client_log_callback);