Browse Source

Add debugging code to logsys.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2175 fd59a12c-fef9-0310-b244-a6a79926bd2f
Fabio M. Di Nitto 17 years ago
parent
commit
6a9ebd8297
1 changed files with 101 additions and 0 deletions
  1. 101 0
      exec/logsys.c

+ 101 - 0
exec/logsys.c

@@ -172,6 +172,107 @@ void *logsys_rec_end;
 /* forward declarations */
 static void logsys_close_logfile(int subsysid);
 
+#ifdef LOGSYS_DEBUG
+static char *decode_mode(int subsysid, char *buf, size_t buflen)
+{
+	memset(buf, 0, buflen);
+
+	if (logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_FILE)
+		snprintf(buf+strlen(buf), buflen, "FILE,");
+
+	if (logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_STDERR)
+		snprintf(buf+strlen(buf), buflen, "STDERR,");
+
+	if (logsys_loggers[subsysid].mode & LOGSYS_MODE_OUTPUT_SYSLOG)
+		snprintf(buf+strlen(buf), buflen, "SYSLOG,");
+
+	if (subsysid == LOGSYS_MAX_SUBSYS_COUNT) {
+		if (logsys_loggers[subsysid].mode & LOGSYS_MODE_FORK)
+			snprintf(buf+strlen(buf), buflen, "FORK,");
+
+		if (logsys_loggers[subsysid].mode & LOGSYS_MODE_THREADED)
+			snprintf(buf+strlen(buf), buflen, "THREADED,");
+	}
+
+	memset(buf+strlen(buf)-1,0,1);
+
+	return buf;
+}
+
+static char *decode_tags(int subsysid, char *buf, size_t buflen)
+{
+	unsigned int i;
+
+	memset(buf, 0, buflen);
+
+	for (i = 0; tagnames[i].c_name != NULL; i++) {
+		if (logsys_loggers[subsysid].tags & tagnames[i].c_val) {
+			snprintf(buf+strlen(buf), buflen, "%s,", tagnames[i].c_name);
+		}
+	}
+
+	memset(buf+strlen(buf)-1,0,1);
+
+	return buf;
+}
+
+static const char *decode_debug(int subsysid)
+{
+	if (logsys_loggers[subsysid].debug)
+		return "on";
+
+	return "off";
+}
+
+static const char *decode_status(int subsysid)
+{
+	if (!logsys_loggers[subsysid].init_status)
+		return "INIT_DONE";
+
+	return "NEEDS_INIT";
+}
+
+static void dump_subsys_config(int subsysid)
+{
+	char modebuf[1024];
+	char tagbuf[1024];
+
+	fprintf(stderr,
+		"ID: %d\n"
+		"subsys: %s\n"
+		"logfile: %s\n"
+		"logfile_fp: %p\n"
+		"mode: %s\n"
+		"debug: %s\n"
+		"tags: %s\n"
+		"syslog_fac: %s\n"
+		"syslog_pri: %s\n"
+		"logfile_pri: %s\n"
+		"init_status: %s\n",
+		subsysid,
+		logsys_loggers[subsysid].subsys,
+		logsys_loggers[subsysid].logfile,
+		logsys_loggers[subsysid].logfile_fp,
+		decode_mode(subsysid, modebuf, sizeof(modebuf)),
+		decode_debug(subsysid),
+		decode_tags(subsysid, tagbuf, sizeof(tagbuf)),
+		logsys_facility_name_get(logsys_loggers[subsysid].syslog_facility),
+		logsys_priority_name_get(logsys_loggers[subsysid].syslog_priority),
+		logsys_priority_name_get(logsys_loggers[subsysid].logfile_priority),
+		decode_status(subsysid));
+}
+
+static void dump_full_config(void)
+{
+	int i;
+
+	for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
+		if (strlen(logsys_loggers[i].subsys) > 0)
+			dump_subsys_config(i);
+	}
+}
+#endif
+
 /*
  * Helpers for _logsys_log_rec functionality
  */