From: Debian Qt/KDE Maintainers Date: Wed, 9 Nov 2016 16:50:49 +0000 (+0000) Subject: qtdebug_syslog X-Git-Tag: archive/raspbian/4%4.8.7+dfsg-15+rpi1~1^2~44 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6ef382d2a7dd4a07c4df989615c876f5a6755fad;p=qt4-x11.git qtdebug_syslog Gbp-Pq: Name qtdebug_syslog.patch --- diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 5b639527d..ca8884df3 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -52,6 +52,7 @@ #ifndef QT_NO_QOBJECT #include +#include #endif #include @@ -94,6 +95,8 @@ _LIT(qt_S60Filter, "Series60v?.*.sis"); _LIT(qt_symbianSystemInstallDir, "z:\\system\\install\\"); +#elif defined(Q_OS_UNIX) +#include #endif QT_BEGIN_NAMESPACE @@ -2388,6 +2391,27 @@ void qt_message_output(QtMsgType msgType, const char *buf) #else fprintf(stderr, "%s\n", buf); fflush(stderr); + + if (qgetenv("QT_USE_SYSLOG").toInt() > 0) { + static bool logOpened = false; + if (!logOpened) { + QByteArray appname; +#ifndef QT_NO_QOBJECT + appname = QCoreApplication::applicationName().toLatin1(); // don't use the local codec here + if (appname.isEmpty()) + appname = QCoreApplicationPrivate::staticAppName().toLatin1(); +#endif + if (appname.isEmpty()) + appname = "unknown-qt-application"; + openlog(appname, LOG_NOWAIT | LOG_PID, LOG_USER); + logOpened = true; + } + + int level = msgType == QtFatalMsg ? LOG_ERR : + msgType == QtWarningMsg ? LOG_WARNING : + LOG_DEBUG; + syslog(level, "%s", buf); + } #endif } diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h index 0a168d6a9..d9df436ef 100644 --- a/src/corelib/kernel/qcoreapplication_p.h +++ b/src/corelib/kernel/qcoreapplication_p.h @@ -86,6 +86,8 @@ public: bool sendThroughObjectEventFilters(QObject *, QEvent *); bool notify_helper(QObject *, QEvent *); + static QString staticAppName() + { return QCoreApplication::self ? QCoreApplication::self->d_func()->appName() : QString(); } virtual QString appName() const; mutable QString applicationName;