Quellcode durchsuchen

LOG: get logging to file working correctly

Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
Reviewed-by: Steven Dake <sdake@redhat.com>
Angus Salkeld vor 14 Jahren
Ursprung
Commit
0e58141a2f
2 geänderte Dateien mit 28 neuen und 10 gelöschten Zeilen
  1. 24 6
      exec/logsys.c
  2. 4 4
      exec/mainconfig.c

+ 24 - 6
exec/logsys.c

@@ -172,8 +172,7 @@ static int logsys_config_file_set_unlocked (
 	}
 	}
 
 
 	logsys_loggers[subsysid].dirty = QB_TRUE;
 	logsys_loggers[subsysid].dirty = QB_TRUE;
-	if ((file == NULL) ||
-	    (strcmp(logsys_loggers[subsysid].subsys, "") == 0)) {
+	if (file == NULL) {
 		return (0);
 		return (0);
 	}
 	}
 
 
@@ -228,6 +227,7 @@ static int logsys_config_file_set_unlocked (
 		*error_string = error_string_response;
 		*error_string = error_string_response;
 		return (-1);
 		return (-1);
 	}
 	}
+	qb_log_format_set(logsys_loggers[subsysid].target_id, format_buffer);
 	return (0);
 	return (0);
 }
 }
 
 
@@ -498,6 +498,7 @@ int logsys_config_file_set (
 int logsys_format_set (const char *format)
 int logsys_format_set (const char *format)
 {
 {
 	int ret = 0;
 	int ret = 0;
+	int i;
 	int c;
 	int c;
 	int w;
 	int w;
 	int reminder;
 	int reminder;
@@ -514,6 +515,12 @@ int logsys_format_set (const char *format)
 	}
 	}
 	qb_log_format_set(QB_LOG_STDERR, format_buffer);
 	qb_log_format_set(QB_LOG_STDERR, format_buffer);
 
 
+	for (i = 0; i <= LOGSYS_MAX_SUBSYS_COUNT; i++) {
+		if (logsys_loggers[i].target_id > 0) {
+			qb_log_format_set(logsys_loggers[i].target_id, format_buffer);
+		}
+	}
+
 	/*
 	/*
 	 * This just goes through and remove %t and %p from
 	 * This just goes through and remove %t and %p from
 	 * the format string for syslog.
 	 * the format string for syslog.
@@ -624,17 +631,28 @@ 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);
 	qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_REMOVE,
 	qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_REMOVE,
 			  QB_LOG_FILTER_FILE, filename, LOG_TRACE);
 			  QB_LOG_FILTER_FILE, filename, LOG_TRACE);
+	if (logsys_loggers[s].target_id > 0) {
+		qb_log_filter_ctl(logsys_loggers[s].target_id,
+			QB_LOG_FILTER_REMOVE,
+			QB_LOG_FILTER_FILE, filename, LOG_TRACE);
+	}
 
 
 	if (logsys_loggers[s].debug) {
 	if (logsys_loggers[s].debug) {
 		syslog_priority = LOG_DEBUG;
 		syslog_priority = LOG_DEBUG;
 		logfile_priority = LOG_DEBUG;
 		logfile_priority = LOG_DEBUG;
 	}
 	}
 	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,
-			  syslog_priority);
+		QB_LOG_FILTER_FILE, filename,
+		syslog_priority);
 	qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_ADD,
 	qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_ADD,
-			  QB_LOG_FILTER_FILE, filename,
-			  logfile_priority);
+		QB_LOG_FILTER_FILE, filename,
+		logfile_priority);
+	if (logsys_loggers[s].target_id > 0) {
+		qb_log_filter_ctl(logsys_loggers[s].target_id,
+			QB_LOG_FILTER_ADD,
+			QB_LOG_FILTER_FILE, filename,
+			logfile_priority);
+	}
 }
 }
 
 
 static void _logsys_config_apply_per_subsys(int32_t s)
 static void _logsys_config_apply_per_subsys(int32_t s)

+ 4 - 4
exec/mainconfig.c

@@ -337,10 +337,6 @@ static int corosync_main_config_set (
 		goto parse_error;
 		goto parse_error;
 	}
 	}
 
 
-	if (corosync_main_config_log_destination_set (objdb, object_handle, subsys, &error_reason,
-	    "to_logfile", LOGSYS_MODE_OUTPUT_FILE, 0, NULL) != 0)
-		goto parse_error;
-
 	if (corosync_main_config_log_destination_set (objdb, object_handle, subsys, &error_reason,
 	if (corosync_main_config_log_destination_set (objdb, object_handle, subsys, &error_reason,
 	    "to_stderr", LOGSYS_MODE_OUTPUT_STDERR, 0, NULL) != 0)
 	    "to_stderr", LOGSYS_MODE_OUTPUT_STDERR, 0, NULL) != 0)
 		goto parse_error;
 		goto parse_error;
@@ -408,6 +404,10 @@ static int corosync_main_config_set (
 		}
 		}
 	}
 	}
 
 
+	if (corosync_main_config_log_destination_set (objdb, object_handle, subsys, &error_reason,
+	    "to_logfile", LOGSYS_MODE_OUTPUT_FILE, 0, NULL) != 0)
+		goto parse_error;
+
 	if (!objdb_get_string (objdb,object_handle, "logfile_priority", &value)) {
 	if (!objdb_get_string (objdb,object_handle, "logfile_priority", &value)) {
 		int logfile_priority;
 		int logfile_priority;