libevent的日志模块的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "event2/event.h"
#include <stdio.h>
#include <time.h>

static void event_selfarg_cb(evutil_socket_t fd, short event, void *arg) {
struct event *ev = arg;
struct event_base *base = event_get_base(ev);
printf("===event trigger %p == %p, is %s\n", ev, event_base_get_running_event(base), ev == event_base_get_running_event(base)?"true":"false");
event_base_loopexit(base, NULL);
}
// 日志回调函数
void custom_log_callback(int severity, const char *msg) {
printf("%s\n", msg);
}

int main() {
// 设置日志级别为 DEBUG
event_enable_debug_logging(EVENT_DBG_ALL);
// 设置日志回调函数
event_set_log_callback(custom_log_callback);

struct timeval qsec = {2, 100 * 1000};
struct event_base *base = event_base_new();
struct event * ev = evtimer_new(base, event_selfarg_cb, event_self_cbarg() );
printf("add event, info: ptr=%p cbk = %p\n", ev, event_selfarg_cb );
evtimer_add(ev, &qsec);
event_base_loop(base, 0);
event_base_free(base);
return 0;
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
add event, info: ptr=0x55e22d62a970 cbk = 0x55e22c2d9b99
event_add: event: 0x55e22d62a970 (fd -1), EV_TIMEOUT call 0x55e22c2d9b99
event_add: event 0x55e22d62a970, timeout in 2 seconds 100000 useconds, call 0x55e22c2d9b99
timeout_next: event: 0x55e22d62a970, in 2 seconds, 100000 useconds
epoll_dispatch: epoll_wait reports 0
event_del: 0x55e22d62a970 (fd -1), callback 0x55e22c2d9b99
timeout_process: event: 0x55e22d62a970, call 0x55e22c2d9b99
event_active: 0x55e22d62a970 (fd -1), res 1, callback 0x55e22c2d9b99
event_del: 0x55e22d62a970 (fd -1), callback 0x55e22c2d9b99
event_process_active: event: 0x55e22d62a970, call 0x55e22c2d9b99
===event trigger 0x55e22d62a970 == 0x55e22d62a970, is true
event_active: 0x55e22d62ae60 (fd -1), res 1, callback 0x55e22c2dac30
event_del: 0x55e22d62ae60 (fd -1), callback 0x55e22c2dac30
event_process_active: event: 0x55e22d62ae60, call 0x55e22c2dac30
event_base_loop: asked to terminate loop.
event_base_free_: 0 events freed