diff --git a/config.tests/unix/syslog/syslog.c b/config.tests/unix/syslog/syslog.c
new file mode 100644
index 0000000000000000000000000000000000000000..01e4bbaf8c0769081387e68cde131e891eaf0a81
--- /dev/null
+++ b/config.tests/unix/syslog/syslog.c
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Tasuku Suzuki <stasuku@gmail.com>
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the config.tests of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <syslog.h>
+
+int main(int argc, char **argv)
+{
+    openlog("qt", 0, LOG_USER);
+    syslog(LOG_INFO, "configure");
+    closelog();
+    return 0;
+}
diff --git a/config.tests/unix/syslog/syslog.pro b/config.tests/unix/syslog/syslog.pro
new file mode 100644
index 0000000000000000000000000000000000000000..abe8cc9cd79430d8530d234805179788a46dee4a
--- /dev/null
+++ b/config.tests/unix/syslog/syslog.pro
@@ -0,0 +1,3 @@
+SOURCES = syslog.c
+
+CONFIG -= qt
diff --git a/configure b/configure
index 6c17ac625a23eaa59c63e7e8185569bcd06ae934..ed352d4c95b4b571dcfaa4b7c1f07c111ebfda7d 100755
--- a/configure
+++ b/configure
@@ -621,6 +621,7 @@ CFG_XFIXES=runtime
 CFG_ZLIB=auto
 CFG_MTDEV=auto
 CFG_JOURNALD=no
+CFG_SYSLOG=no
 CFG_SQLITE=qt
 CFG_GIF=auto
 CFG_PNG=yes
@@ -1700,6 +1701,13 @@ while [ "$#" -gt 0 ]; do
             UNKNOWN_OPT=yes
         fi
         ;;
+    syslog)
+        if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+            CFG_SYSLOG="$VAL"
+        else
+            UNKNOWN_OPT=yes
+        fi
+        ;;
     sqlite)
         if [ "$VAL" = "system" ]; then
             CFG_SQLITE=system
@@ -2472,6 +2480,9 @@ Third Party Libraries:
  +  -no-journald ........ Do not send logging output to journald.
     -journald ........... Send logging output to journald.
 
+ +  -no-syslog .......... Do not send logging output to syslog.
+    -syslog ............. Send logging output to syslog.
+
     -no-gif ............. Do not compile GIF reading support.
 
     -no-libpng .......... Do not compile PNG support.
@@ -4557,6 +4568,23 @@ if [ "$CFG_JOURNALD" != "no" ]; then
     fi
 fi
 
+if [ "$CFG_SYSLOG" != "no" ]; then
+    if compileTest unix/syslog "syslog"; then
+        CFG_SYSLOG=yes
+        QMAKE_CONFIG="$QMAKE_CONFIG syslog"
+    else
+        if [ "$CFG_SYSLOG" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+            echo "syslog support cannot be enabled due to functionality tests!"
+            echo " Turn on verbose messaging (-v) to $0 to see the final report."
+            echo " If you believe this message is in error you may use the continue"
+            echo " switch (-continue) to $0 to continue."
+            exit 101
+        else
+            CFG_SYSLOG=no
+        fi
+    fi
+fi
+
 if [ "$CFG_LARGEFILE" = "auto" ]; then
     #Large files should be enabled for all Linux systems
     CFG_LARGEFILE=yes
@@ -7078,8 +7106,10 @@ report_support "  Image formats:"
 report_support_plugin "    GIF .................." "$CFG_GIF" qt QtGui
 report_support_plugin "    JPEG ................." "$CFG_JPEG" "$CFG_LIBJPEG" QtGui
 report_support_plugin "    PNG .................." "$CFG_PNG" "$CFG_LIBPNG" QtGui
-report_support "  journald ..............." "$CFG_JOURNALD"
 report_support "  libinput................" "$CFG_LIBINPUT"
+report_support "  Logging backends:"
+report_support "    journald ..............." "$CFG_JOURNALD"
+report_support "    syslog   ..............." "$CFG_SYSLOG"
 report_support "  mtdev .................." "$CFG_MTDEV" yes "system library"
 report_support "  Networking:"
 [ "$XPLATFORM_MAC" = "yes" ] && \
@@ -7169,12 +7199,12 @@ if [ "$CFG_OPENSSL" = "linked" ] && [ "$OPENSSL_LIBS" = "" ]; then
     echo "For example:"
     echo "    OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked"
 fi
-if [ "$CFG_JOURNALD" = "yes" ] || [ "$CFG_SLOG2" = "yes" ]; then
+if [ "$CFG_JOURNALD" = "yes" ] || [ "$CFG_SYSLOG" = "yes" ] || [ "$CFG_SLOG2" = "yes" ]; then
     echo
-    echo "NOTE: journald or slog2 integration is enabled."
+    echo "NOTE: journald, syslog or slog2 integration is enabled."
     echo "If your users intend on developing applications against this build,"
     echo "ensure that the IDEs they use either set QT_LOGGING_TO_CONSOLE to 1"
-    echo "or the IDE is able to read the logged output from journald or slog2."
+    echo "or the IDE is able to read the logged output from journald, syslog or slog2."
 fi
 if [ "$CFG_XKBCOMMON" = "qt" ] && [ "$CFG_XKB_CONFIG_ROOT" = "not found" ]; then
     echo
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
index 6a8104bee2c129778efb86368a71392132dd2e22..43f3a865441ee5b288788903ab092fccf000f575 100644
--- a/src/corelib/global/global.pri
+++ b/src/corelib/global/global.pri
@@ -54,3 +54,7 @@ journald {
     PKGCONFIG_PRIVATE += libsystemd-journal
     DEFINES += QT_USE_JOURNALD
 }
+
+syslog {
+    DEFINES += QT_USE_SYSLOG
+}
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index fca8656f9be166752d1818dab95bc3819b8cf84b..20c31f7ef8ccbf566335c2db2e1fc7e15f02b103 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -65,6 +65,9 @@
 # include <systemd/sd-journal.h>
 # include <syslog.h>
 #endif
+#if defined(QT_USE_SYSLOG) && !defined(QT_BOOTSTRAPPED)
+# include <syslog.h>
+#endif
 #ifdef Q_OS_UNIX
 # include <sys/types.h>
 # include <sys/stat.h>
@@ -1436,6 +1439,32 @@ static void systemd_default_message_handler(QtMsgType type,
 }
 #endif
 
+#ifdef QT_USE_SYSLOG
+static void syslog_default_message_handler(QtMsgType type, const char *message)
+{
+    int priority = LOG_INFO; // Informational
+    switch (type) {
+    case QtDebugMsg:
+        priority = LOG_DEBUG; // Debug-level messages
+        break;
+    case QtInfoMsg:
+        priority = LOG_INFO; // Informational conditions
+        break;
+    case QtWarningMsg:
+        priority = LOG_WARNING; // Warning conditions
+        break;
+    case QtCriticalMsg:
+        priority = LOG_CRIT; // Critical conditions
+        break;
+    case QtFatalMsg:
+        priority = LOG_ALERT; // Action must be taken immediately
+        break;
+    }
+
+    syslog(priority, "%s", message);
+}
+#endif
+
 #ifdef Q_OS_ANDROID
 static void android_default_message_handler(QtMsgType type,
                                   const QMessageLogContext &context,
@@ -1481,6 +1510,9 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con
 #elif defined(QT_USE_JOURNALD) && !defined(QT_BOOTSTRAPPED)
         systemd_default_message_handler(type, context, logMessage);
         return;
+#elif defined(QT_USE_SYSLOG) && !defined(QT_BOOTSTRAPPED)
+        syslog_default_message_handler(type, logMessage.toUtf8().constData());
+        return;
 #elif defined(Q_OS_ANDROID)
         android_default_message_handler(type, context, logMessage);
         return;