diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-12 22:11:02 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-12 22:11:02 +0000 |
commit | 89201083ba81ee8249f1d852dd00ccc154a711a4 (patch) | |
tree | 9f87789697c383f0cdbe2689d5b57fe3cead0757 /logger.c | |
parent | 8efd511a7e93e18a0c1945e63d0751571c8091e1 (diff) |
Add queue logging and fix indications buglet
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2159 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'logger.c')
-rwxr-xr-x | logger.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -220,6 +220,43 @@ static void init_logger_chain(void) ast_mutex_unlock(&loglock); } +static FILE *qlog = NULL; +static ast_mutex_t qloglock = AST_MUTEX_INITIALIZER; + +void ast_queue_log(const char *queuename, const char *callid, const char *agent, const char *event, const char *fmt, ...) +{ + va_list ap; + ast_mutex_lock(&qloglock); + if (qlog) { + va_start(ap, fmt); + fprintf(qlog, "%ld|%s|%s|%s|%s|", (long)time(NULL), callid, queuename, agent, event); + vfprintf(qlog, fmt, ap); + fprintf(qlog, "\n"); + va_end(ap); + fflush(qlog); + } + ast_mutex_unlock(&qloglock); +} + +static void queue_log_init(void) +{ + char filename[256]; + int reloaded = 0; + ast_mutex_lock(&qloglock); + if (qlog) { + reloaded = 1; + fclose(qlog); + qlog = NULL; + } + snprintf(filename, sizeof(filename), "%s/%s", (char *)ast_config_AST_LOG_DIR, "queue_log"); + qlog = fopen(filename, "a"); + ast_mutex_unlock(&qloglock); + if (reloaded) + ast_queue_log("NONE", "NONE", "NONE", "CONFIGRELOAD", ""); + else + ast_queue_log("NONE", "NONE", "NONE", "QUEUESTART", ""); +} + int reload_logger(int rotate) { char old[AST_CONFIG_MAX_PATH]; @@ -294,6 +331,7 @@ int reload_logger(int rotate) return 0; } else ast_log(LOG_ERROR, "Unable to create event log: %s\n", strerror(errno)); + queue_log_init(); init_logger_chain(); return -1; } |