diff options
author | Alejandro Exojo <suy@badopi.org> | 2014-03-10 11:40:26 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-05 13:27:05 +0200 |
commit | 0ebfd0866d7cc9e3dabccf088d8ef1339dfe51a6 (patch) | |
tree | 1b7409e62fbbfc65ce8ca91289a1d185748dce08 | |
parent | 687fbc11525fddda73ba4925d916be555df22ca9 (diff) |
Use category names when logging to the journal
Use the custom field QT_CATEGORY to store the name of the QLoggingCategory used
when writing to systemd's journal. To pass custom fields sd_journal_send() is
needed, and is used in combination with #define SD_JOURNAL_SUPPRESS_LOCATION to
store the metadata that is already in the QMessageLogContext.
Change-Id: I6a120701f7012aaa46451dd3d91586a419c5f803
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
-rw-r--r-- | config.tests/unix/journald/journald.c | 8 | ||||
-rw-r--r-- | src/corelib/global/qlogging.cpp | 16 |
2 files changed, 16 insertions, 8 deletions
diff --git a/config.tests/unix/journald/journald.c b/config.tests/unix/journald/journald.c index 470d526e68..32f0de683b 100644 --- a/config.tests/unix/journald/journald.c +++ b/config.tests/unix/journald/journald.c @@ -40,9 +40,15 @@ ****************************************************************************/ #include <systemd/sd-journal.h> +#include <syslog.h> int main(int argc, char **argv) { - sd_journal_print_with_location(LOG_INFO, "CODE_FILE=foo.c", "CODE_LINE=0", "unknown_function", "test message"); + sd_journal_send("MESSAGE=%s", "test message", + "PRIORITY=%i", LOG_INFO, + "CODE_FUNC=%s", "unknown", + "CODE_LINE=%d", 0, + "CODE_FILE=%s", "foo.c", + NULL); return 0; } diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 8c1d8b867d..da26490d18 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -64,7 +64,9 @@ #endif #if defined(QT_USE_JOURNALD) && !defined(QT_BOOTSTRAPPED) +# define SD_JOURNAL_SUPPRESS_LOCATION # include <systemd/sd-journal.h> +# include <syslog.h> # include <unistd.h> #endif @@ -1170,13 +1172,13 @@ static void systemd_default_message_handler(QtMsgType type, break; } - char filebuf[PATH_MAX + sizeof("CODE_FILE=")]; - snprintf(filebuf, sizeof(filebuf), "CODE_FILE=%s", context.file ? context.file : "unknown"); - - char linebuf[20]; - snprintf(linebuf, sizeof(linebuf), "CODE_LINE=%d", context.line); - - sd_journal_print_with_location(priority, filebuf, linebuf, context.function ? context.function : "unknown", "%s", message.toUtf8().constData()); + sd_journal_send("MESSAGE=%s", message.toUtf8().constData(), + "PRIORITY=%i", priority, + "CODE_FUNC=%s", context.function ? context.function : "unknown", + "CODE_LINE=%d", context.line, + "CODE_FILE=%s", context.file ? context.file : "unknown", + "QT_CATEGORY=%s", context.category ? context.category : "unknown", + NULL); } #endif |