diff options
author | Mark Spencer <markster@digium.com> | 2003-10-02 06:40:10 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2003-10-02 06:40:10 +0000 |
commit | 03e8e4a18e0bf8dfdae4274bdf183120fbd6803b (patch) | |
tree | 700e740e240bd991e22751fa6da01497bf63ba1b | |
parent | 3b49a87972b07b800f88e9a8fbe6f66ed18205cd (diff) |
Add "logger reload" CLI (bug #345)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-x | logger.c | 60 |
1 files changed, 44 insertions, 16 deletions
@@ -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]; |