|
|
|
@ -12,8 +12,8 @@ |
|
|
|
#include "loglib.h" |
|
|
|
#include "main.h" |
|
|
|
|
|
|
|
__thread struct log_info log_info; |
|
|
|
__thread GSList *log_info_stack; |
|
|
|
__thread struct log_info log_info[LOG_INFO_STACK_SIZE]; |
|
|
|
__thread unsigned int log_info_idx; |
|
|
|
|
|
|
|
int _log_facility_cdr = 0; |
|
|
|
int _log_facility_rtcp = 0; |
|
|
|
@ -34,96 +34,96 @@ static ilog_prefix_func * const ilog_prefix_funcs[__LF_LAST] = { |
|
|
|
|
|
|
|
|
|
|
|
static void ilog_prefix_default(char *prefix, size_t prefix_len) { |
|
|
|
switch (log_info.e) { |
|
|
|
switch (log_info[log_info_idx].e) { |
|
|
|
case LOG_INFO_NONE: |
|
|
|
prefix[0] = 0; |
|
|
|
break; |
|
|
|
case LOG_INFO_CALL: |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M "]: ", |
|
|
|
STR_FMT_M(&log_info.call->callid)); |
|
|
|
STR_FMT_M(&log_info[log_info_idx].call->callid)); |
|
|
|
break; |
|
|
|
case LOG_INFO_STREAM_FD: |
|
|
|
if (log_info.stream_fd->call) { |
|
|
|
if (log_info.stream_fd->stream) |
|
|
|
if (log_info[log_info_idx].stream_fd->call) { |
|
|
|
if (log_info[log_info_idx].stream_fd->stream) |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M "/" STR_FORMAT_M "/%u port %5u]: ", |
|
|
|
STR_FMT_M(&log_info.stream_fd->call->callid), |
|
|
|
STR_FMT_M(&log_info.stream_fd->stream->media->monologue->tag), |
|
|
|
log_info.stream_fd->stream->media->index, |
|
|
|
log_info.stream_fd->socket.local.port); |
|
|
|
STR_FMT_M(&log_info[log_info_idx].stream_fd->call->callid), |
|
|
|
STR_FMT_M(&log_info[log_info_idx].stream_fd->stream->media->monologue->tag), |
|
|
|
log_info[log_info_idx].stream_fd->stream->media->index, |
|
|
|
log_info[log_info_idx].stream_fd->socket.local.port); |
|
|
|
else |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M " port %5u]: ", |
|
|
|
STR_FMT_M(&log_info.stream_fd->call->callid), |
|
|
|
log_info.stream_fd->socket.local.port); |
|
|
|
STR_FMT_M(&log_info[log_info_idx].stream_fd->call->callid), |
|
|
|
log_info[log_info_idx].stream_fd->socket.local.port); |
|
|
|
} |
|
|
|
else |
|
|
|
snprintf(prefix, prefix_len, "[no call, port %5u]: ", |
|
|
|
log_info.stream_fd->socket.local.port); |
|
|
|
log_info[log_info_idx].stream_fd->socket.local.port); |
|
|
|
|
|
|
|
break; |
|
|
|
case LOG_INFO_STR: |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M "]: ", |
|
|
|
STR_FMT_M(log_info.str)); |
|
|
|
STR_FMT_M(log_info[log_info_idx].str)); |
|
|
|
break; |
|
|
|
case LOG_INFO_C_STRING: |
|
|
|
snprintf(prefix, prefix_len, "[%s%s%s]: ", |
|
|
|
FMT_M(log_info.cstr)); |
|
|
|
FMT_M(log_info[log_info_idx].cstr)); |
|
|
|
break; |
|
|
|
case LOG_INFO_ICE_AGENT: |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M "/" STR_FORMAT_M "/%u]: ", |
|
|
|
STR_FMT_M(&log_info.ice_agent->call->callid), |
|
|
|
STR_FMT_M(&log_info.ice_agent->media->monologue->tag), |
|
|
|
log_info.ice_agent->media->index); |
|
|
|
STR_FMT_M(&log_info[log_info_idx].ice_agent->call->callid), |
|
|
|
STR_FMT_M(&log_info[log_info_idx].ice_agent->media->monologue->tag), |
|
|
|
log_info[log_info_idx].ice_agent->media->index); |
|
|
|
break; |
|
|
|
case LOG_INFO_MEDIA: |
|
|
|
snprintf(prefix, prefix_len, "[" STR_FORMAT_M "/" STR_FORMAT_M "/%u]: ", |
|
|
|
STR_FMT_M(&log_info.call->callid), |
|
|
|
STR_FMT_M(&log_info.media->monologue->tag), |
|
|
|
log_info.media->index); |
|
|
|
STR_FMT_M(&log_info[log_info_idx].call->callid), |
|
|
|
STR_FMT_M(&log_info[log_info_idx].media->monologue->tag), |
|
|
|
log_info[log_info_idx].media->index); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void ilog_prefix_parsable(char *prefix, size_t prefix_len) { |
|
|
|
switch (log_info.e) { |
|
|
|
switch (log_info[log_info_idx].e) { |
|
|
|
case LOG_INFO_NONE: |
|
|
|
prefix[0] = 0; |
|
|
|
break; |
|
|
|
case LOG_INFO_CALL: |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\"]: ", |
|
|
|
STR_FMT(&log_info.call->callid)); |
|
|
|
STR_FMT(&log_info[log_info_idx].call->callid)); |
|
|
|
break; |
|
|
|
case LOG_INFO_STREAM_FD: |
|
|
|
if (log_info.stream_fd->call) { |
|
|
|
if (log_info.stream_fd->stream) |
|
|
|
if (log_info[log_info_idx].stream_fd->call) { |
|
|
|
if (log_info[log_info_idx].stream_fd->stream) |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\" tag=\""STR_FORMAT"\" index=\"%u\" port=\"%5u\"]: ", |
|
|
|
STR_FMT(&log_info.stream_fd->call->callid), |
|
|
|
STR_FMT(&log_info.stream_fd->stream->media->monologue->tag), |
|
|
|
log_info.stream_fd->stream->media->index, |
|
|
|
log_info.stream_fd->socket.local.port); |
|
|
|
STR_FMT(&log_info[log_info_idx].stream_fd->call->callid), |
|
|
|
STR_FMT(&log_info[log_info_idx].stream_fd->stream->media->monologue->tag), |
|
|
|
log_info[log_info_idx].stream_fd->stream->media->index, |
|
|
|
log_info[log_info_idx].stream_fd->socket.local.port); |
|
|
|
else |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\" port=\"%5u\"]: ", |
|
|
|
STR_FMT(&log_info.stream_fd->call->callid), |
|
|
|
log_info.stream_fd->socket.local.port); |
|
|
|
STR_FMT(&log_info[log_info_idx].stream_fd->call->callid), |
|
|
|
log_info[log_info_idx].stream_fd->socket.local.port); |
|
|
|
} |
|
|
|
break; |
|
|
|
case LOG_INFO_STR: |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\"]: ", |
|
|
|
STR_FMT(log_info.str)); |
|
|
|
STR_FMT(log_info[log_info_idx].str)); |
|
|
|
break; |
|
|
|
case LOG_INFO_C_STRING: |
|
|
|
snprintf(prefix, prefix_len, "[ID=\"%s\"]: ", log_info.cstr); |
|
|
|
snprintf(prefix, prefix_len, "[ID=\"%s\"]: ", log_info[log_info_idx].cstr); |
|
|
|
break; |
|
|
|
case LOG_INFO_ICE_AGENT: |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\" tag=\""STR_FORMAT"\" index=\"%u\"]: ", |
|
|
|
STR_FMT(&log_info.ice_agent->call->callid), |
|
|
|
STR_FMT(&log_info.ice_agent->media->monologue->tag), |
|
|
|
log_info.ice_agent->media->index); |
|
|
|
STR_FMT(&log_info[log_info_idx].ice_agent->call->callid), |
|
|
|
STR_FMT(&log_info[log_info_idx].ice_agent->media->monologue->tag), |
|
|
|
log_info[log_info_idx].ice_agent->media->index); |
|
|
|
break; |
|
|
|
case LOG_INFO_MEDIA: |
|
|
|
snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\" tag=\""STR_FORMAT"\" index=\"%u\"]: ", |
|
|
|
STR_FMT(&log_info.call->callid), |
|
|
|
STR_FMT(&log_info.media->monologue->tag), |
|
|
|
log_info.media->index); |
|
|
|
STR_FMT(&log_info[log_info_idx].call->callid), |
|
|
|
STR_FMT(&log_info[log_info_idx].media->monologue->tag), |
|
|
|
log_info[log_info_idx].media->index); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -167,16 +167,16 @@ void rtcplog(const char* cdrbuffer) { |
|
|
|
int get_local_log_level(unsigned int subsystem_idx) { |
|
|
|
call_t *call = NULL; |
|
|
|
|
|
|
|
switch (log_info.e) { |
|
|
|
switch (log_info[log_info_idx].e) { |
|
|
|
case LOG_INFO_CALL: |
|
|
|
case LOG_INFO_MEDIA: |
|
|
|
call = log_info.call; |
|
|
|
call = log_info[log_info_idx].call; |
|
|
|
break; |
|
|
|
case LOG_INFO_STREAM_FD: |
|
|
|
call = log_info.stream_fd->call; |
|
|
|
call = log_info[log_info_idx].stream_fd->call; |
|
|
|
break; |
|
|
|
case LOG_INFO_ICE_AGENT: |
|
|
|
call = log_info.ice_agent->call; |
|
|
|
call = log_info[log_info_idx].ice_agent->call; |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
|