[Asterisk-cvs] asterisk logger.c,1.4,1.5

markster at lists.digium.com markster at lists.digium.com
Thu Oct 2 01:38:59 CDT 2003


Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv31710

Modified Files:
	logger.c 
Log Message:
Add "logger reload" CLI (bug #345)


Index: logger.c
===================================================================
RCS file: /usr/cvsroot/asterisk/logger.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- logger.c	8 Sep 2003 16:48:06 -0000	1.4
+++ logger.c	2 Oct 2003 06:40:10 -0000	1.5
@@ -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 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,28 +197,55 @@
 	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));
 	init_logger_chain();
 	return -1;
 }
+
 
 extern void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
 {




More information about the svn-commits mailing list