Просмотр исходного кода

- enable the global debug flag again, individual 'logger' directives might
be used to disable a certain logger source.
- when DEBUG compiled it does not use the new printer threads (printouts are not buffered)
- man page update
- openais.conf update



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1234 fd59a12c-fef9-0310-b244-a6a79926bd2f

Hans Feldt 19 лет назад
Родитель
Сommit
7a2d68f348
3 измененных файлов с 70 добавлено и 33 удалено
  1. 7 1
      conf/openais.conf
  2. 37 23
      exec/print.c
  3. 26 9
      man/openais.conf.5

+ 7 - 1
conf/openais.conf

@@ -13,11 +13,17 @@ totem {
 }
 }
 
 
 logging {
 logging {
+	fileline: off
 	to_stderr: yes
 	to_stderr: yes
 	to_file: yes
 	to_file: yes
-	logfile: /tmp/ais
+	logfile: /tmp/openais.log
 	debug: off
 	debug: off
 	timestamp: on
 	timestamp: on
+	logger {
+		ident: AMF
+		debug: off
+		tags: enter|leave|trace1|trace2|trace3|trace4|trace6
+	}
 }
 }
 
 
 amf {
 amf {

+ 37 - 23
exec/print.c

@@ -55,6 +55,7 @@
 #include <syslog.h>
 #include <syslog.h>
 #include <stdlib.h>
 #include <stdlib.h>
 #include <pthread.h>
 #include <pthread.h>
+#include <signal.h>
 
 
 #include "print.h"
 #include "print.h"
 #include "totemip.h"
 #include "totemip.h"
@@ -105,11 +106,7 @@ static int logger_init (const char *ident, int tags, int level, int mode)
 
 
  	for (i = 0; i < MAX_LOGGERS; i++) {
  	for (i = 0; i < MAX_LOGGERS; i++) {
 		if (strcmp (loggers[i].ident, ident) == 0) {
 		if (strcmp (loggers[i].ident, ident) == 0) {
-			loggers[i].tags |= tags;
-			if (level > loggers[i].level) {
-				loggers[i].level = level;
-			}
-			break;
+			goto done;
 		}
 		}
 	}
 	}
 
 
@@ -125,8 +122,8 @@ static int logger_init (const char *ident, int tags, int level, int mode)
 		}
 		}
 	}
 	}
 
 
-	assert(i < MAX_LOGGERS);
-
+done:
+	assert (i < MAX_LOGGERS);
 	return i;
 	return i;
 }
 }
 
 
@@ -181,7 +178,6 @@ static void _log_printf (char *file, int line,
 	int i = 0;
 	int i = 0;
 	int len;
 	int len;
 	struct log_data log_data;
 	struct log_data log_data;
-	unsigned int res = 0;
 
 
 	assert (id < MAX_LOGGERS);
 	assert (id < MAX_LOGGERS);
 
 
@@ -238,15 +234,18 @@ static void _log_printf (char *file, int line,
 	if (log_data.log_string == NULL) {
 	if (log_data.log_string == NULL) {
 		goto drop_log_msg;
 		goto drop_log_msg;
 	}
 	}
-	
+
+#ifndef DEBUG
 	if (log_setup_called) {
 	if (log_setup_called) {
-		res = worker_thread_group_work_add (&log_thread_group, &log_data);
+		int res = worker_thread_group_work_add (&log_thread_group, &log_data);
 		if (res == 0) {
 		if (res == 0) {
 			dropped_log_entries = 0;
 			dropped_log_entries = 0;
 		} else {
 		} else {
 			dropped_log_entries += 1;
 			dropped_log_entries += 1;
 		}
 		}
-	} else {
+	} else
+#endif
+	{
 		log_printf_worker_fn (NULL, &log_data);	
 		log_printf_worker_fn (NULL, &log_data);	
 	}
 	}
 
 
@@ -262,21 +261,36 @@ int _log_init (const char *ident)
 {
 {
 	assert (ident != NULL);
 	assert (ident != NULL);
 
 
-	/*
-	** do different things before and after log_setup() has been called
-	*/
-	if (log_setup_called) {
-		return logger_init (ident, TAG_LOG, LOG_LEVEL_INFO, 0);
+	if (logmode & LOG_MODE_DEBUG) {
+		return logger_init (ident, TAG_LOG, LOG_LEVEL_DEBUG, 0);
 	} else {
 	} else {
-		return logger_init (ident, ~0, LOG_LEVEL_DEBUG, 0);
+		return logger_init (ident, TAG_LOG, LOG_LEVEL_INFO, 0);
+	}
+}
+
+#ifdef PRINT_DEBUG
+static void sigusr2_handler (int num)
+{
+	int i;
+
+	for (i = 0; i < MAX_LOGGERS; i++) {
+		if (strlen (loggers[i].ident) > 0) {
+			printf("ident: %6s, tags: %08x, level: %d\n",
+				loggers[i].ident, loggers[i].tags, loggers[i].level);
+		}
 	}
 	}
 }
 }
+#endif
 
 
 int log_setup (char **error_string, struct main_config *config)
 int log_setup (char **error_string, struct main_config *config)
 {
 {
 	int i;
 	int i;
 	static char error_string_response[512];
 	static char error_string_response[512];
 
 
+#ifdef PRINT_DEBUG
+	signal (SIGUSR2, sigusr2_handler);
+#endif
+
 	if (config->logmode & LOG_MODE_FILE) {
 	if (config->logmode & LOG_MODE_FILE) {
 		log_file_fp = fopen (config->logfile, "a+");
 		log_file_fp = fopen (config->logfile, "a+");
 		if (log_file_fp == 0) {
 		if (log_file_fp == 0) {
@@ -298,14 +312,14 @@ int log_setup (char **error_string, struct main_config *config)
 	}
 	}
 
 
 	/*
 	/*
-	** reinit all loggers that has initialised before log_setup() was called.
+	** reinit level for all loggers that has initialised
+	** before log_setup() was called.
 	*/
 	*/
 	for (i = 0; i < MAX_LOGGERS; i++) {
 	for (i = 0; i < MAX_LOGGERS; i++) {
-		loggers[i].tags = TAG_LOG;
-		if (config->logmode & LOG_MODE_DEBUG) {
-			loggers[i].level = LOG_LEVEL_DEBUG;
-		} else {
-			loggers[i].level = LOG_LEVEL_INFO;
+		if (strlen (loggers[i].ident) > 0) {
+			if (config->logmode & LOG_MODE_DEBUG) {
+				loggers[i].level = LOG_LEVEL_DEBUG;
+			}
 		}
 		}
 	}
 	}
 
 

+ 26 - 9
man/openais.conf.5

@@ -419,20 +419,35 @@ to_file
 .TP
 .TP
 to_syslog
 to_syslog
 These specify the destination of logging output. Any combination of
 These specify the destination of logging output. Any combination of
-these options may be specified.
+these options may be specified. Valid options are
+.B yes
+and
+.B no.
+
+The default is syslog and stderr.
+
 
 
 .TP
 .TP
 logfile
 logfile
-If the logoutput: file directive is set, this option specifies where the
-log file is written to.
+If the 
+.B to_file
+directive is set to
+.B yes
+, this option specifies the pathname of the log file.
 
 
-The default is syslog.
+No default.
 
 
 .TP
 .TP
 debug
 debug
-This specifies whether debug output is logged.  This is generally a bad idea, 
-unless there is some specific bug or problem that must be found in the
-executive.  Set the value to on to debug, off to turn of debugging.
+This specifies whether debug output is logged for all services.  This is
+generally a bad idea, unless there is some specific bug or problem that must be
+found in the executive. Set the value to 
+.B on
+to debug, 
+.B off
+to turn off debugging. If enabled, individual loggers can be disabled using a
+.B logger
+directive.
 
 
 The default is off.
 The default is off.
 
 
@@ -469,7 +484,9 @@ sub-directive of logging there are three configuration options:
 
 
 .TP
 .TP
 ident
 ident
-This specifies the identity (name) for which logging is specified. This directive is required.
+This specifies the identity (name) for which logging is specified. This is the
+name used by a service in the log_init () call. E.g. 'CKPT'. This directive is
+required.
 
 
 .TP
 .TP
 debug
 debug
@@ -485,7 +502,7 @@ Set debug directive to
 in order to enable tracing using tags.
 in order to enable tracing using tags.
 Values are specified using a vertical bar as a logical OR separator:
 Values are specified using a vertical bar as a logical OR separator:
 
 
-enter|return|trace1|trace2|trace3|...
+enter|leave|trace1|trace2|trace3|...
 
 
 The default is none.
 The default is none.