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