Skip to content
Snippets Groups Projects
Commit 115937b7 authored by Mark Michelson's avatar Mark Michelson
Browse files

Print the correct PID in log messages. Prior to

this commit, only the logger thread's PID would
be printed.

(closes issue #13150)
Reported by: atis
Patches:
      log_pid.diff uploaded by putnopvut (license 60)
Tested by: eliel




git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133448 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 46db155e
No related branches found
No related tags found
No related merge requests found
......@@ -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];
};
......@@ -833,7 +834,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];
......@@ -844,14 +845,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);
......@@ -880,7 +881,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];
......@@ -896,7 +897,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)),
......@@ -913,7 +914,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)
......@@ -1151,6 +1152,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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment