|
|
|
@ -136,6 +136,7 @@ struct logmsg {
|
|
|
|
|
char file[80];
|
|
|
|
|
int line;
|
|
|
|
|
char function[80];
|
|
|
|
|
long process_id;
|
|
|
|
|
AST_LIST_ENTRY(logmsg) list;
|
|
|
|
|
char str[0];
|
|
|
|
|
};
|
|
|
|
@ -745,7 +746,7 @@ static int handle_SIGXFSZ(int sig)
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void ast_log_vsyslog(int level, const char *file, int line, const char *function, char *str)
|
|
|
|
|
static void ast_log_vsyslog(int level, const char *file, int line, const char *function, char *str, long pid)
|
|
|
|
|
{
|
|
|
|
|
char buf[BUFSIZ];
|
|
|
|
|
|
|
|
|
@ -756,14 +757,14 @@ static void ast_log_vsyslog(int level, const char *file, int line, const char *f
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (level == __LOG_VERBOSE) {
|
|
|
|
|
snprintf(buf, sizeof(buf), "VERBOSE[%ld]: %s", (long)GETTID(), str);
|
|
|
|
|
snprintf(buf, sizeof(buf), "VERBOSE[%ld]: %s", pid, str);
|
|
|
|
|
level = __LOG_DEBUG;
|
|
|
|
|
} else if (level == __LOG_DTMF) {
|
|
|
|
|
snprintf(buf, sizeof(buf), "DTMF[%ld]: %s", (long)GETTID(), str);
|
|
|
|
|
snprintf(buf, sizeof(buf), "DTMF[%ld]: %s", pid, str);
|
|
|
|
|
level = __LOG_DEBUG;
|
|
|
|
|
} else {
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s[%ld]: %s:%d in %s: %s",
|
|
|
|
|
levels[level], (long)GETTID(), file, line, function, str);
|
|
|
|
|
levels[level], pid, file, line, function, str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
term_strip(buf, buf, strlen(buf) + 1);
|
|
|
|
@ -792,7 +793,7 @@ static void logger_print_normal(struct logmsg *logmsg)
|
|
|
|
|
continue;
|
|
|
|
|
/* Check syslog channels */
|
|
|
|
|
if (chan->type == LOGTYPE_SYSLOG && (chan->logmask & (1 << logmsg->level))) {
|
|
|
|
|
ast_log_vsyslog(logmsg->level, logmsg->file, logmsg->line, logmsg->function, logmsg->str);
|
|
|
|
|
ast_log_vsyslog(logmsg->level, logmsg->file, logmsg->line, logmsg->function, logmsg->str, logmsg->process_id);
|
|
|
|
|
/* Console channels */
|
|
|
|
|
} else if (chan->type == LOGTYPE_CONSOLE && (chan->logmask & (1 << logmsg->level))) {
|
|
|
|
|
char linestr[128];
|
|
|
|
@ -808,7 +809,7 @@ static void logger_print_normal(struct logmsg *logmsg)
|
|
|
|
|
snprintf(buf, sizeof(buf), "[%s] %s[%ld]: %s:%s %s: %s",
|
|
|
|
|
logmsg->date,
|
|
|
|
|
term_color(tmp1, levels[logmsg->level], colors[logmsg->level], 0, sizeof(tmp1)),
|
|
|
|
|
(long)GETTID(),
|
|
|
|
|
logmsg->process_id,
|
|
|
|
|
term_color(tmp2, logmsg->file, COLOR_BRWHITE, 0, sizeof(tmp2)),
|
|
|
|
|
term_color(tmp3, linestr, COLOR_BRWHITE, 0, sizeof(tmp3)),
|
|
|
|
|
term_color(tmp4, logmsg->function, COLOR_BRWHITE, 0, sizeof(tmp4)),
|
|
|
|
@ -825,7 +826,7 @@ static void logger_print_normal(struct logmsg *logmsg)
|
|
|
|
|
|
|
|
|
|
/* Print out to the file */
|
|
|
|
|
res = fprintf(chan->fileptr, "[%s] %s[%ld] %s: %s",
|
|
|
|
|
logmsg->date, levels[logmsg->level], (long)GETTID(), logmsg->file, logmsg->str);
|
|
|
|
|
logmsg->date, levels[logmsg->level], logmsg->process_id, logmsg->file, logmsg->str);
|
|
|
|
|
if (res <= 0 && !ast_strlen_zero(logmsg->str)) {
|
|
|
|
|
fprintf(stderr, "**** Asterisk Logging Error: ***********\n");
|
|
|
|
|
if (errno == ENOMEM || errno == ENOSPC)
|
|
|
|
@ -1063,6 +1064,7 @@ void ast_log(int level, const char *file, int line, const char *function, const
|
|
|
|
|
logmsg->line = line;
|
|
|
|
|
ast_copy_string(logmsg->file, file, sizeof(logmsg->file));
|
|
|
|
|
ast_copy_string(logmsg->function, function, sizeof(logmsg->function));
|
|
|
|
|
logmsg->process_id = (long) GETTID();
|
|
|
|
|
|
|
|
|
|
/* If the logger thread is active, append it to the tail end of the list - otherwise skip that step */
|
|
|
|
|
if (logthread != AST_PTHREADT_NULL) {
|
|
|
|
|