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>
This commit is contained in:
parent
687fbc1152
commit
0ebfd0866d
@ -40,9 +40,15 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <systemd/sd-journal.h>
|
#include <systemd/sd-journal.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(QT_USE_JOURNALD) && !defined(QT_BOOTSTRAPPED)
|
#if defined(QT_USE_JOURNALD) && !defined(QT_BOOTSTRAPPED)
|
||||||
|
# define SD_JOURNAL_SUPPRESS_LOCATION
|
||||||
# include <systemd/sd-journal.h>
|
# include <systemd/sd-journal.h>
|
||||||
|
# include <syslog.h>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1170,13 +1172,13 @@ static void systemd_default_message_handler(QtMsgType type,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
char filebuf[PATH_MAX + sizeof("CODE_FILE=")];
|
sd_journal_send("MESSAGE=%s", message.toUtf8().constData(),
|
||||||
snprintf(filebuf, sizeof(filebuf), "CODE_FILE=%s", context.file ? context.file : "unknown");
|
"PRIORITY=%i", priority,
|
||||||
|
"CODE_FUNC=%s", context.function ? context.function : "unknown",
|
||||||
char linebuf[20];
|
"CODE_LINE=%d", context.line,
|
||||||
snprintf(linebuf, sizeof(linebuf), "CODE_LINE=%d", context.line);
|
"CODE_FILE=%s", context.file ? context.file : "unknown",
|
||||||
|
"QT_CATEGORY=%s", context.category ? context.category : "unknown",
|
||||||
sd_journal_print_with_location(priority, filebuf, linebuf, context.function ? context.function : "unknown", "%s", message.toUtf8().constData());
|
NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user