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

Add support for debug level trace in config file

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Jan Friesse 13 лет назад
Родитель
Сommit
5717655019
5 измененных файлов с 34 добавлено и 9 удалено
  1. 1 1
      conf/lenses/corosync.aug
  2. 8 2
      exec/logconfig.c
  3. 15 5
      exec/logsys.c
  4. 8 0
      include/corosync/logsys.h
  5. 2 1
      man/corosync.conf.5

+ 1 - 1
conf/lenses/corosync.aug

@@ -83,7 +83,7 @@ let common_logging =
    kv "to_syslog" /yes|no|on|off/
    kv "to_syslog" /yes|no|on|off/
    |kv "to_stderr" /yes|no|on|off/
    |kv "to_stderr" /yes|no|on|off/
    |kv "to_logfile" /yes|no|on|off/
    |kv "to_logfile" /yes|no|on|off/
-   |kv "debug" /yes|no|on|off/
+   |kv "debug" /yes|no|on|off|trace/
    |kv "logfile_priority" /alert|crit|debug|emerg|err|info|notice|warning/
    |kv "logfile_priority" /alert|crit|debug|emerg|err|info|notice|warning/
    |kv "syslog_priority" /alert|crit|debug|emerg|err|info|notice|warning/
    |kv "syslog_priority" /alert|crit|debug|emerg|err|info|notice|warning/
    |kv "syslog_facility" /daemon|local0|local1|local2|local3|local4|local5|local6|local7/
    |kv "syslog_facility" /daemon|local0|local1|local2|local3|local4|local5|local6|local7/

+ 8 - 2
exec/logconfig.c

@@ -417,14 +417,20 @@ static int corosync_main_config_set (
 
 
 	snprintf(key_name, MAP_KEYNAME_MAXLEN, "%s.%s", path, "debug");
 	snprintf(key_name, MAP_KEYNAME_MAXLEN, "%s.%s", path, "debug");
 	if (map_get_string(key_name, &value) == CS_OK) {
 	if (map_get_string(key_name, &value) == CS_OK) {
+		if (strcmp (value, "trace") == 0) {
+			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_TRACE) < 0) {
+				error_reason = "unable to set debug trace";
+				goto parse_error;
+			}
+		} else
 		if (strcmp (value, "on") == 0) {
 		if (strcmp (value, "on") == 0) {
-			if (logsys_config_debug_set (subsys, 1) < 0) {
+			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_ON) < 0) {
 				error_reason = "unable to set debug on";
 				error_reason = "unable to set debug on";
 				goto parse_error;
 				goto parse_error;
 			}
 			}
 		} else
 		} else
 		if (strcmp (value, "off") == 0) {
 		if (strcmp (value, "off") == 0) {
-			if (logsys_config_debug_set (subsys, 0) < 0) {
+			if (logsys_config_debug_set (subsys, LOGSYS_DEBUG_OFF) < 0) {
 				error_reason = "unable to set debug off";
 				error_reason = "unable to set debug off";
 				goto parse_error;
 				goto parse_error;
 			}
 			}

+ 15 - 5
exec/logsys.c

@@ -88,7 +88,7 @@ struct logsys_logger {
 	char subsys[LOGSYS_MAX_SUBSYS_NAMELEN];	/* subsystem name */
 	char subsys[LOGSYS_MAX_SUBSYS_NAMELEN];	/* subsystem name */
 	char *logfile;				/* log to file */
 	char *logfile;				/* log to file */
 	unsigned int mode;			/* subsystem mode */
 	unsigned int mode;			/* subsystem mode */
-	unsigned int debug;			/* debug on|off */
+	unsigned int debug;			/* debug on|off|trace */
 	int syslog_priority;			/* priority */
 	int syslog_priority;			/* priority */
 	int logfile_priority;			/* priority to file */
 	int logfile_priority;			/* priority to file */
 	int init_status;			/* internal field to handle init queues
 	int init_status;			/* internal field to handle init queues
@@ -344,7 +344,7 @@ int _logsys_system_setup(
 		"%s", mainsystem);
 		"%s", mainsystem);
 
 
 	logsys_loggers[i].mode = mode;
 	logsys_loggers[i].mode = mode;
-	logsys_loggers[i].debug = 0;
+	logsys_loggers[i].debug = LOGSYS_DEBUG_OFF;
 	logsys_loggers[i].file_idx = 0;
 	logsys_loggers[i].file_idx = 0;
 	logsys_loggers[i].logfile_priority = syslog_priority;
 	logsys_loggers[i].logfile_priority = syslog_priority;
 	logsys_loggers[i].syslog_priority = syslog_priority;
 	logsys_loggers[i].syslog_priority = syslog_priority;
@@ -709,9 +709,19 @@ static void _logsys_config_apply_per_file(int32_t s, const char *filename)
 			QB_LOG_FILTER_FILE, filename, LOG_TRACE);
 			QB_LOG_FILTER_FILE, filename, LOG_TRACE);
 	}
 	}
 
 
-	if (logsys_loggers[s].debug) {
-		syslog_priority = LOG_DEBUG;
-		logfile_priority = LOG_DEBUG;
+	if (logsys_loggers[s].debug != LOGSYS_DEBUG_OFF) {
+		switch (logsys_loggers[s].debug) {
+		case LOGSYS_DEBUG_ON:
+			syslog_priority = LOG_DEBUG;
+			logfile_priority = LOG_DEBUG;
+			break;
+		case LOGSYS_DEBUG_TRACE:
+			syslog_priority = LOG_TRACE;
+			logfile_priority = LOG_TRACE;
+			break;
+		default:
+			assert(0);
+		}
 	}
 	}
 	qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD,
 	qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD,
 		QB_LOG_FILTER_FILE, filename,
 		QB_LOG_FILTER_FILE, filename,

+ 8 - 0
include/corosync/logsys.h

@@ -72,6 +72,7 @@ extern "C" {
 #define LOGSYS_LEVEL_NOTICE		LOG_NOTICE
 #define LOGSYS_LEVEL_NOTICE		LOG_NOTICE
 #define LOGSYS_LEVEL_INFO		LOG_INFO
 #define LOGSYS_LEVEL_INFO		LOG_INFO
 #define LOGSYS_LEVEL_DEBUG		LOG_DEBUG
 #define LOGSYS_LEVEL_DEBUG		LOG_DEBUG
+#define LOGSYS_LEVEL_TRACE		LOG_TRACE
 
 
 /*
 /*
  * logsys_logger bits
  * logsys_logger bits
@@ -83,6 +84,13 @@ extern "C" {
 #define LOGSYS_MAX_SUBSYS_NAMELEN	64
 #define LOGSYS_MAX_SUBSYS_NAMELEN	64
 #define LOGSYS_MAX_PERROR_MSG_LEN	128
 #define LOGSYS_MAX_PERROR_MSG_LEN	128
 
 
+/*
+ * Debug levels
+ */
+#define LOGSYS_DEBUG_OFF		0
+#define LOGSYS_DEBUG_ON			1
+#define LOGSYS_DEBUG_TRACE		2
+
 #ifndef LOGSYS_UTILS_ONLY
 #ifndef LOGSYS_UTILS_ONLY
 
 
 /*
 /*

+ 2 - 1
man/corosync.conf.5

@@ -578,7 +578,8 @@ The default is: info.
 
 
 .TP
 .TP
 debug
 debug
-This specifies whether debug output is logged for this particular logger.
+This specifies whether debug output is logged for this particular logger. Also can contain
+value trace, what is highest level of debug informations.
 
 
 The default is off.
 The default is off.