--- minidlna-1.3.3.orig/log.c	2023-05-31 10:25:59.000000000 +0200
+++ minidlna-1.3.3/log.c	2026-05-17 09:32:57.423533699 +0200
@@ -23,6 +23,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
+#include <syslog.h>
 #include <time.h>
 
 #include "upnpglobalvars.h"
@@ -147,6 +148,40 @@ log_init(const char *debug)
 	return 0;
 }
 
+static int
+syslog_err(int level, enum _log_facility facility,
+	   char *fname, int lineno, char *fmt, va_list *ap)
+{
+	char myfmt[1024];
+	int level_to_syslog[E_MAXDEBUG + 1] = {
+		/* [E_OFF]	= 0, */
+		[E_FATAL]	= LOG_CRIT,
+		[E_ERROR]	= LOG_ERR,
+		[E_WARN]	= LOG_WARNING,
+		[E_INFO]	= LOG_NOTICE,
+		[E_DEBUG]	= LOG_INFO,
+		[E_MAXDEBUG]	= LOG_DEBUG,
+	};
+
+	if (level == E_OFF)
+		return 0;
+
+	if (level > E_MAXDEBUG)
+		return -1;
+
+	if (level)
+		snprintf(myfmt, 1024, "%s:%d: %s: %s", fname, lineno, level_name[level], fmt);
+	else
+		snprintf(myfmt, 1024, "%s:%d: %s", fname, lineno, fmt);
+
+	vsyslog(level_to_syslog[level], myfmt, *ap);
+
+	if (level == E_FATAL)
+		exit(-1);
+
+	return 0;
+}
+
 void
 log_err(int level, enum _log_facility facility, char *fname, int lineno, char *fmt, ...)
 {
@@ -155,8 +190,14 @@ log_err(int level, enum _log_facility fa
 	if (level && level>log_level[facility] && level>E_FATAL)
 		return;
 
-	if (!log_fp)
+	va_start(ap, fmt);
+	if (!log_fp) {
+		if (!syslog_err(level, facility, fname, lineno, fmt, &ap)) {
+			va_end(ap);
+			return;
+		}
 		log_fp = stdout;
+	}
 
 	// timestamp
 	if (!GETFLAG(SYSTEMD_MASK))
@@ -176,7 +217,6 @@ log_err(int level, enum _log_facility fa
 		fprintf(log_fp, "%s:%d: ", fname, lineno);
 
 	// user log
-	va_start(ap, fmt);
 	if (vfprintf(log_fp, fmt, ap) == -1)
 	{
 		va_end(ap);
