diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 218187f4244f471c5079a4bd9aedd0c305a659ff..48df6e48da226cb1fdd263557ce30ec0b6c989a3 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -5230,11 +5230,12 @@ void ftp_server(void* arg)
 		scfg.size = sizeof(scfg);
 		SAFECOPY(error, UNKNOWN_LOAD_ERROR);
 		if (!load_cfg(&scfg, text, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) {
-			lprintf(LOG_CRIT, "!ERROR %s", error);
-			lprintf(LOG_CRIT, "!Failed to load configuration files");
+			lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error);
 			cleanup(1, __LINE__);
 			break;
 		}
+		if (error[0] != '\0')
+			lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error);
 
 		mqtt_startup(&mqtt, &scfg, (struct startup*)startup, ftp_ver(), lputs);
 
diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index 1cdd9eec2eae985711899df5a5350f4ea8b9e094..78f06189a0a84eef9b9b8213046012a7e4e80a28 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -1470,7 +1470,9 @@ int main(int argc, char **argv)
 		if (require_cfg)
 			return do_bail(1);
 		prep_dir(scfg.ctrl_dir, scfg.exec_dir, sizeof(scfg.exec_dir));
-	}
+	} else if (error[0] != '\0')
+		lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error);
+
 	SAFECOPY(scfg.temp_dir, "../temp");
 #endif
 	prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir));
diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c
index 26faa4d9e0168ae53cf4ad72180e131c4d1c06b0..0c12a0429e959d471c07927965152257cfbabb79 100644
--- a/src/sbbs3/load_cfg.c
+++ b/src/sbbs3/load_cfg.c
@@ -69,6 +69,8 @@ bool load_cfg(scfg_t* cfg, char* text[], bool prep, bool req_cfg, char* error, s
 		              , cfg->size, sizeof(scfg_t));
 		return false;
 	}
+	if (error != NULL)
+		*error = '\0';
 
 	free_cfg(cfg);  /* free allocated config parameters */
 
@@ -134,8 +136,7 @@ bool load_cfg(scfg_t* cfg, char* text[], bool prep, bool req_cfg, char* error, s
 					safe_snprintf(error, maxerrlen, "%s text ID (%s) not recognized"
 					              , str
 					              , list[i]->name);
-					success = false;
-					break;
+					continue;
 				}
 				free(text[n]);
 				text[n] = strdup(list[i]->value);
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 628eb030ecfc387a323588250aa850ce94923426..b0dc6fca9fca43060fd77610068cf50ada93fa5f 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -6195,11 +6195,13 @@ void mail_server(void* arg)
 		scfg.size = sizeof(scfg);
 		SAFECOPY(error, UNKNOWN_LOAD_ERROR);
 		if (!load_cfg(&scfg, text, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) {
-			lprintf(LOG_CRIT, "!ERROR %s", error);
-			lprintf(LOG_CRIT, "!Failed to load configuration files");
+			lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error);
 			cleanup(1);
 			return;
 		}
+		if (error[0] != '\0')
+			lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error);
+
 
 		mqtt_startup(&mqtt, &scfg, (struct startup*)startup, mail_ver(), lputs);
 
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index d6b78bbab6c7045b1e88b3a9f55f6b33c08436dc..dc49938cb11ef6f69f3fb06625115c3402599e8e 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -5073,11 +5073,12 @@ void bbs_thread(void* arg)
 		scfg.node_num = startup->first_node;
 		SAFECOPY(logstr, UNKNOWN_LOAD_ERROR);
 		if (!load_cfg(&scfg, text, /* prep: */ true, /* node_req: */ true, logstr, sizeof(logstr))) {
-			lprintf(LOG_CRIT, "!ERROR %s", logstr);
-			lprintf(LOG_CRIT, "!FAILED to load configuration files");
+			lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr);
 			cleanup(1);
 			return;
 		}
+		if (logstr[0] != '\0')
+			lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", logstr);
 
 		mqtt_startup(&mqtt, &scfg, (struct startup*)startup, bbs_ver(), lputs);
 
@@ -5763,8 +5764,7 @@ NO_SSH:
 					lprintf(LOG_WARNING, "Node %d LOAD ERROR: %s, falling back to Node %d", cfg->node_num, logstr, first_node);
 					cfg->node_num = first_node;
 					if (!load_cfg(cfg, node_text[node_num - 1], /* prep: */ true, /* node: */ true, logstr, sizeof(logstr))) {
-						lprintf(LOG_CRIT, "!ERROR %s", logstr);
-						lprintf(LOG_CRIT, "!FAILED to load configuration files");
+						lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr);
 						sbbs->bprintf("\r\nFAILED: %s", logstr);
 						client_off(client_socket);
 						SSH_END(client_socket);
diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index b7b8722b6216f6fd966b65c7ed57b0b75e22fab8..a5a272aecabd5d575ef9dc4cab27f1c40edc3257 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -1706,9 +1706,11 @@ int main(int argc, char** argv)
 	SAFECOPY(error, UNKNOWN_LOAD_ERROR);
 	lprintf(LOG_INFO, "Loading configuration files from %s", scfg.ctrl_dir);
 	if (!load_cfg(&scfg, /* text: */ NULL, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) {
-		lprintf(LOG_ERR, "!ERROR Loading Configuration Files: %s", error);
+		lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error);
 		return -1;
 	}
+	if (error[0] != '\0')
+		lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error);
 
 /* Daemonize / Set uid/gid */
 #ifdef __unix__
diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index a6567c84c1f9b36cd74a48365bc7b2c851bad1dc..0e3fa7b611ca35dd4da9354f2266c492c24cb767 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -6655,11 +6655,12 @@ int main(int argc, char **argv)
 	scfg.size = sizeof(scfg);
 	SAFECOPY(str, UNKNOWN_LOAD_ERROR);
 	if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, str, sizeof(str))) {
-		fprintf(stderr, "!ERROR %s\n", str);
-		fprintf(stderr, "!Failed to load configuration files\n");
+		fprintf(stderr, "!ERROR loading configuration files: %s\n", str);
 		bail(1);
 		return -1;
 	}
+	if (str[0] != '\0')
+		fprintf(stderr, "!WARNING loading configuration files: %s\n", str);
 
 	twit_list = list_of_twits(&scfg);
 
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index ac2601dd813b69431314629da210f28e371d6926..1ee9eeb8e08c61131e5798f779ffdf8965bc350d 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -2019,11 +2019,12 @@ void services_thread(void* arg)
 		scfg.size = sizeof(scfg);
 		SAFECOPY(error, UNKNOWN_LOAD_ERROR);
 		if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, error, sizeof(error))) {
-			lprintf(LOG_CRIT, "!ERROR %s", error);
-			lprintf(LOG_CRIT, "!Failed to load configuration files");
+			lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error);
 			cleanup(1);
 			return;
 		}
+		if (error[0] != '\0')
+			lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error);
 
 		mqtt_startup(&mqtt, &scfg, (struct startup*)startup, services_ver(), lputs);
 
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 6155b18ed812bf880050278b5a0811bd1d7be60d..606261575f7ac825ade4ac3667bff88b234fbdaa 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -7370,11 +7370,12 @@ void web_server(void* arg)
 		scfg.size = sizeof(scfg);
 		SAFECOPY(logstr, UNKNOWN_LOAD_ERROR);
 		if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, logstr, sizeof(logstr))) {
-			lprintf(LOG_CRIT, "!ERROR %s", logstr);
-			lprintf(LOG_CRIT, "!FAILED to load configuration files");
+			lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr);
 			cleanup(1);
 			return;
 		}
+		if (logstr[0] != '\0')
+			lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", logstr);
 
 		mqtt_startup(&mqtt, &scfg, (struct startup*)startup, web_ver(), lputs);