diff --git a/CHANGES b/CHANGES index f6fa3397d68b939a39989be7e8a4fb0b3ec102ca..0a4f809225211be53407166a4cdedf93dbde50b5 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,8 @@ CLI Changes ----------- * New 'gtalk show settings' command showing the current settings loaded from gtalk.conf. + * The 'logger reload' command now supports an optional argument, specifying an + alternate configuration file to use. ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ---------------- diff --git a/main/logger.c b/main/logger.c index 12f835f999e593abbff007e5300d3473509c24e2..db9ec9bdd1460e2f7b0da957cb2be6c44fd586ed 100644 --- a/main/logger.c +++ b/main/logger.c @@ -283,7 +283,7 @@ static struct logchannel *make_logchannel(const char *channel, const char *compo return chan; } -static void init_logger_chain(int locked) +static void init_logger_chain(int locked, const char *altconf) { struct logchannel *chan; struct ast_config *cfg; @@ -291,7 +291,7 @@ static void init_logger_chain(int locked) const char *s; struct ast_flags config_flags = { 0 }; - if (!(cfg = ast_config_load2("logger.conf", "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) { + if (!(cfg = ast_config_load2(S_OR(altconf, "logger.conf"), "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) { return; } @@ -616,7 +616,7 @@ static int rotate_file(const char *filename) return res; } -static int reload_logger(int rotate) +static int reload_logger(int rotate, const char *altconf) { char old[PATH_MAX] = ""; int queue_rotate = rotate; @@ -665,7 +665,7 @@ static int reload_logger(int rotate) filesize_reload_needed = 0; - init_logger_chain(1 /* locked */); + init_logger_chain(1 /* locked */, altconf); if (logfiles.queue_log) { do { @@ -716,7 +716,7 @@ static int reload_logger(int rotate) a full Asterisk reload) */ int logger_reload(void) { - if (reload_logger(0)) { + if (reload_logger(0, NULL)) { return RESULT_FAILURE; } return RESULT_SUCCESS; @@ -727,14 +727,14 @@ static char *handle_logger_reload(struct ast_cli_entry *e, int cmd, struct ast_c switch (cmd) { case CLI_INIT: e->command = "logger reload"; - e->usage = - "Usage: logger reload\n" + e->usage = + "Usage: logger reload [<alt-conf>]\n" " Reloads the logger subsystem state. Use after restarting syslogd(8) if you are using syslog logging.\n"; return NULL; case CLI_GENERATE: return NULL; } - if (reload_logger(0)) { + if (reload_logger(0, a->argc == 3 ? a->argv[2] : NULL)) { ast_cli(a->fd, "Failed to reload the logger\n"); return CLI_FAILURE; } @@ -753,7 +753,7 @@ static char *handle_logger_rotate(struct ast_cli_entry *e, int cmd, struct ast_c case CLI_GENERATE: return NULL; } - if (reload_logger(1)) { + if (reload_logger(1, NULL)) { ast_cli(a->fd, "Failed to reload the logger and rotate log files\n"); return CLI_FAILURE; } @@ -966,7 +966,7 @@ static void logger_print_normal(struct logmsg *logmsg) /* If we need to reload because of the file size, then do so */ if (filesize_reload_needed) { - reload_logger(-1); + reload_logger(-1, NULL); ast_verb(1, "Rotated Logs Per SIGXFSZ (Exceeded file size limit)\n"); } @@ -1048,7 +1048,7 @@ int init_logger(void) ast_mkdir(ast_config_AST_LOG_DIR, 0777); /* create log channels */ - init_logger_chain(0 /* locked */); + init_logger_chain(0 /* locked */, NULL); return 0; }