From 00d848c94e0b358863fe801a299dab1bb314dad3 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Wed, 26 Dec 2007 15:58:17 +0000 Subject: Adding support for storing the queue log entries in a realtime backend. (closes issue #11625, reported and patched by sergee) Thank you very much to sergee for adding this new feature! git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@94782 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/logger.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'main/logger.c') diff --git a/main/logger.c b/main/logger.c index c82862e6b..252b620b6 100644 --- a/main/logger.c +++ b/main/logger.c @@ -418,18 +418,34 @@ void ast_queue_log(const char *queuename, const char *callid, const char *agent, va_list ap; char qlog_msg[8192]; int qlog_len; - if (qlog) { + char time_str[16]; + + if (ast_check_realtime("queue_log")) { va_start(ap, fmt); - qlog_len = snprintf(qlog_msg, sizeof(qlog_msg), "%ld|%s|%s|%s|%s|", (long)time(NULL), callid, queuename, agent, event); - vsnprintf(qlog_msg + qlog_len, sizeof(qlog_msg) - qlog_len, fmt, ap); + vsnprintf(qlog_msg, sizeof(qlog_msg), fmt, ap); va_end(ap); + snprintf(time_str, sizeof(time_str), "%ld", (long)time(NULL)); + ast_store_realtime("queue_log", "time", time_str, + "callid", callid, + "queuename", queuename, + "agent", agent, + "event", event, + "data", qlog_msg, + NULL); + } else { + if (qlog) { + va_start(ap, fmt); + qlog_len = snprintf(qlog_msg, sizeof(qlog_msg), "%ld|%s|%s|%s|%s|", (long)time(NULL), callid, queuename, agent, event); + vsnprintf(qlog_msg + qlog_len, sizeof(qlog_msg) - qlog_len, fmt, ap); + va_end(ap); + } + AST_RWLIST_RDLOCK(&logchannels); + if (qlog) { + fprintf(qlog, "%s\n", qlog_msg); + fflush(qlog); + } + AST_RWLIST_UNLOCK(&logchannels); } - AST_RWLIST_RDLOCK(&logchannels); - if (qlog) { - fprintf(qlog, "%s\n", qlog_msg); - fflush(qlog); - } - AST_RWLIST_UNLOCK(&logchannels); } static int rotate_file(const char *filename) -- cgit v1.2.3