程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> AerospikeC客戶端手冊———日志

AerospikeC客戶端手冊———日志

編輯:DB2教程

AerospikeC客戶端手冊———日志


日志

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);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved