开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

kdc_proxy日志注册接口

连接器向kdc_agent注册日志回调函数,kdc_proxy接管连接器日志。

函数原型

uint32_t SetLogCallback(SetLogCallbackFunc cb);

参数说明

连接器需要提供四参数的日志函数,分别表示严重等级、日志信息、文件名和代码行。

typedef enum {
KDC_LOG_LEVEL_DEBUG = 0,
KDC_LOG_LEVEL_INFO,
KDC_LOG_LEVEL_WARN,
KDC_LOG_LEVEL_ERROR,
} KdcLogLevel;
typedef void (*SetLogCallbackFunc)(KdcLogLevel severity, const char *msg, const char *file, int32_t line);

返回值说明

返回值

含义

0

成功

非0

失败

注意事项

建议在一开始就调用,保证kdc_proxy能记录后续运行状态日志。

使用示例

// 1.准备好连接器日志函数
static void stress_log(int32_t severity, const char *msg, const char *file, int32_t line)
{
const char *level;
switch (severity) {
case 0: level = "DEBUG"; break;
case 1: level = "INFO "; break;
case 2: level = "WARN "; break;
default: level = "ERROR"; break;
}
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
struct tm *tm_info = localtime(&ts.tv_sec);
char timestamp[32];
strftime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S", tm_info);
int millis = (int)(ts.tv_nsec / 1000000);
if (g_worker_log) {
fprintf(g_worker_log, "[%s.%03d] [%s] [kdc_proxy] [%s:%d] %s\n",
timestamp, millis, level, file, line, msg);
fflush(g_worker_log);
}
}
// 2.调用接口将日志回调设置给kdc_proxy(调用一次即可)
uint32_t ret = SetLogCallback(stress_log);
if (ret != 0) {
// 处理错误
return;
}