diff --git a/logger.c b/logger.c index 36c76e6c5840010a1e970189a93295fa3b22bc10..7fa4dec3105b7319495b14141c8332fd0fa48c7c 100755 --- a/logger.c +++ b/logger.c @@ -21,6 +21,7 @@ #include <asterisk/channel.h> #include <asterisk/config.h> #include <asterisk/term.h> +#include <asterisk/cli.h> #include <string.h> #include <stdlib.h> #include <errno.h> @@ -173,22 +174,22 @@ static void init_logger_chain(void) } -static struct verb { - void (*verboser)(const char *string, int opos, int replacelast, int complete); - struct verb *next; -} *verboser = NULL; - -int init_logger(void) +int reload_logger(void) { char tmp[AST_CONFIG_MAX_PATH]; + ast_mutex_lock(&loglock); + if (eventlog) + fclose(eventlog); mkdir((char *)ast_config_AST_LOG_DIR, 0755); snprintf(tmp, sizeof(tmp), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); eventlog = fopen((char *)tmp, "a"); + ast_mutex_unlock(&loglock); + if (eventlog) { init_logger_chain(); - ast_log(LOG_EVENT, "Started Asterisk Event Logger\n"); + ast_log(LOG_EVENT, "Restarted Asterisk Event Logger\n"); if (option_verbose) - ast_verbose("Asterisk Event Logger Started %s\n",(char *)tmp); + ast_verbose("Asterisk Event Logger restarted\n"); return 0; } else ast_log(LOG_ERROR, "Unable to create event log: %s\n", strerror(errno)); @@ -196,22 +197,48 @@ int init_logger(void) return -1; } -int reload_logger(void) +static int handle_logger_reload(int fd, int argc, char *argv[]) +{ + if(reload_logger()) + { + ast_cli(fd, "Failed to reloadthe logger\n"); + return RESULT_FAILURE; + } + else + return RESULT_SUCCESS; +} + +static struct verb { + void (*verboser)(const char *string, int opos, int replacelast, int complete); + struct verb *next; +} *verboser = NULL; + + +static char logger_reload_help[] = +"Usage: logger reload\n" +" Reopens the log files. Use after a rotating the log files\n"; + +static struct ast_cli_entry reload_logger_cli = + { { "logger", "reload", NULL }, + handle_logger_reload, "Reopens the log files", + logger_reload_help }; + + +int init_logger(void) { char tmp[AST_CONFIG_MAX_PATH]; - ast_mutex_lock(&loglock); - if (eventlog) - fclose(eventlog); + + /* register the relaod logger cli command */ + ast_cli_register(&reload_logger_cli); + mkdir((char *)ast_config_AST_LOG_DIR, 0755); snprintf(tmp, sizeof(tmp), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); eventlog = fopen((char *)tmp, "a"); - ast_mutex_unlock(&loglock); - if (eventlog) { init_logger_chain(); - ast_log(LOG_EVENT, "Restarted Asterisk Event Logger\n"); + ast_log(LOG_EVENT, "Started Asterisk Event Logger\n"); if (option_verbose) - ast_verbose("Asterisk Event Logger restarted\n"); + ast_verbose("Asterisk Event Logger Started %s\n",(char *)tmp); return 0; } else ast_log(LOG_ERROR, "Unable to create event log: %s\n", strerror(errno)); @@ -219,6 +246,7 @@ int reload_logger(void) return -1; } + extern void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...) { char date[256];