diff --git a/include/haproxy/log-t.h b/include/haproxy/log-t.h
index 9146b77..039621a 100644
--- a/include/haproxy/log-t.h
+++ b/include/haproxy/log-t.h
@@ -237,6 +237,10 @@
 	int minlvl;
 	int maxlen;
 	struct logsrv *ref;
+	struct {
+                char *file;                     /* file where the logsrv appears */
+                int line;                       /* line where the logsrv appears */
+        } conf;
 	__decl_thread(HA_SPINLOCK_T lock);
 };
 
diff --git a/include/haproxy/log.h b/include/haproxy/log.h
index 837ae0c..8bd4486 100644
--- a/include/haproxy/log.h
+++ b/include/haproxy/log.h
@@ -86,7 +86,7 @@
 int parse_logformat_string(const char *str, struct proxy *curproxy, struct list *list_format, int options, int cap, char **err);
 
 /* Parse "log" keyword and update the linked list. */
-int parse_logsrv(char **args, struct list *logsrvs, int do_del, char **err);
+int parse_logsrv(char **args, struct list *logsrvs, int do_del, const char *file, int linenum, char **err);
 
 /*
  * This function adds a header to the message and sends the syslog message
diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c
index e076247..79058c6 100644
--- a/src/cfgparse-global.c
+++ b/src/cfgparse-global.c
@@ -904,7 +904,7 @@
                 }
 	}
 	else if (strcmp(args[0], "log") == 0) { /* "no log" or "log ..." */
-		if (!parse_logsrv(args, &global.logsrvs, (kwm == KWM_NO), &errmsg)) {
+		if (!parse_logsrv(args, &global.logsrvs, (kwm == KWM_NO), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c
index 739dc83..49a6d14 100644
--- a/src/cfgparse-listen.c
+++ b/src/cfgparse-listen.c
@@ -2690,7 +2690,7 @@
 		}
 	}
 	else if (strcmp(args[0], "log") == 0) { /* "no log" or "log ..." */
-		if (!parse_logsrv(args, &curproxy->logsrvs, (kwm == KWM_NO), &errmsg)) {
+		if (!parse_logsrv(args, &curproxy->logsrvs, (kwm == KWM_NO), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 8f612ee..47f04e5 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -730,7 +730,7 @@
 			err_code |= ERR_ALERT | ERR_ABORT;
 			goto out;
 		}
-		if (!parse_logsrv(args, &curpeers->peers_fe->logsrvs, (kwm == KWM_NO), &errmsg)) {
+		if (!parse_logsrv(args, &curpeers->peers_fe->logsrvs, (kwm == KWM_NO), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
diff --git a/src/fcgi-app.c b/src/fcgi-app.c
index 61f904d..a1b6e68 100644
--- a/src/fcgi-app.c
+++ b/src/fcgi-app.c
@@ -1056,7 +1056,7 @@
 		}
 	}
 	else if (strcmp(args[0], "log-stderr") == 0) {
-		if (!parse_logsrv(args, &curapp->logsrvs, (kwm == KWM_NO), &errmsg)) {
+		if (!parse_logsrv(args, &curapp->logsrvs, (kwm == KWM_NO), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 		}
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index 5688ca9..83f6074 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -3773,7 +3773,7 @@
 	else if (strcmp(args[0], "log") == 0) {
 		char *errmsg = NULL;
 
-		if (!parse_logsrv(args, &curlogsrvs, (kwm == 1), &errmsg)) {
+		if (!parse_logsrv(args, &curlogsrvs, (kwm == 1), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
diff --git a/src/log.c b/src/log.c
index 292eb58..c8cdafa 100644
--- a/src/log.c
+++ b/src/log.c
@@ -808,7 +808,7 @@
  * The function returns 1 in success case, otherwise, it returns 0 and err is
  * filled.
  */
-int parse_logsrv(char **args, struct list *logsrvs, int do_del, char **err)
+int parse_logsrv(char **args, struct list *logsrvs, int do_del, const char *file, int linenum, char **err)
 {
 	struct smp_log_range *smp_rgs = NULL;
 	struct sockaddr_storage *sk;
@@ -858,6 +858,8 @@
 			node->ref = logsrv;
 			LIST_INIT(&node->list);
 			LIST_ADDQ(logsrvs, &node->list);
+			node->conf.file = strdup(file);
+			node->conf.line = linenum;
 
 		  skip_logsrv:
 			continue;
@@ -886,6 +888,9 @@
 		goto error;
 	}
 
+	logsrv->conf.file = strdup(file);
+	logsrv->conf.line = linenum;
+
 	/* skip address for now, it will be parsed at the end */
 	cur_arg = 2;
 
@@ -1040,18 +1045,20 @@
 	logsrv->addr = *sk;
 
 	if (sk->ss_family == AF_INET || sk->ss_family == AF_INET6) {
-		logsrv->addr = *sk;
 		if (!port1)
 			set_host_port(&logsrv->addr, SYSLOG_PORT);
 	}
+
  done:
 	LIST_ADDQ(logsrvs, &logsrv->list);
 	return 1;
 
   error:
 	free(smp_rgs);
-	if (logsrv)
+	if (logsrv) {
+		free(logsrv->conf.file);
 		free(logsrv->ring_name);
+	}
 	free(logsrv);
 	return 0;
 }
@@ -4062,7 +4069,7 @@
 		}
 	}
 	else if (strcmp(args[0], "log") == 0) {
-		if (!parse_logsrv(args, &cfg_log_forward->logsrvs, (kwm == KWM_NO), &errmsg)) {
+		if (!parse_logsrv(args, &cfg_log_forward->logsrvs, (kwm == KWM_NO), file, linenum, &errmsg)) {
 			ha_alert("parsing [%s:%d] : %s : %s\n", file, linenum, args[0], errmsg);
 			         err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
diff --git a/src/sink.c b/src/sink.c
index f734b07..5d43525 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -993,7 +993,7 @@
 		if (logsrv->type == LOG_TARGET_BUFFER) {
 			sink = sink_find(logsrv->ring_name);
 			if (!sink || sink->type != SINK_TYPE_BUFFER) {
-				ha_alert("global log server uses unknown ring named '%s'.\n", logsrv->ring_name);
+				ha_alert("global log server declared in file '%s' at line %d uses unknown ring named '%s'.\n", logsrv->conf.file, logsrv->conf.line, logsrv->ring_name);
 				err_code |= ERR_ALERT | ERR_FATAL;
 			}
 			logsrv->sink = sink;
@@ -1005,7 +1005,7 @@
 			if (logsrv->type == LOG_TARGET_BUFFER) {
 				sink = sink_find(logsrv->ring_name);
 				if (!sink || sink->type != SINK_TYPE_BUFFER) {
-					ha_alert("proxy '%s' log server uses unknown ring named '%s'.\n", px->id, logsrv->ring_name);
+					ha_alert("log server declared in proxy section '%s' in file '%s' at line %d uses unknown ring named '%s'.\n", px->id, logsrv->conf.file, logsrv->conf.line, logsrv->ring_name);
 					err_code |= ERR_ALERT | ERR_FATAL;
 				}
 				logsrv->sink = sink;
@@ -1018,7 +1018,7 @@
 			if (logsrv->type == LOG_TARGET_BUFFER) {
 				sink = sink_find(logsrv->ring_name);
 				if (!sink || sink->type != SINK_TYPE_BUFFER) {
-					ha_alert("log-forward '%s' log server uses unknown ring named '%s'.\n", px->id, logsrv->ring_name);
+					ha_alert("log server declared in log-forward section '%s' in file '%s' at line %d uses unknown ring named '%s'.\n", px->id, logsrv->conf.file, logsrv->conf.line, logsrv->ring_name);
 					err_code |= ERR_ALERT | ERR_FATAL;
 				}
 				logsrv->sink = sink;
