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;
}
父主题: kdc_proxy对外接口