mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
libsysprof-collector: avoid formatting unless recording
We can avoid the process of creating the log message altogether if we are not actively recording messages.
This commit is contained in:
@ -461,12 +461,38 @@ sysprof_collector_log_printf (GLogLevelFlags severity,
|
|||||||
const gchar *format,
|
const gchar *format,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
g_autofree gchar *formatted = NULL;
|
COLLECTOR_BEGIN {
|
||||||
va_list args;
|
g_autofree gchar *formatted = NULL;
|
||||||
|
SysprofCaptureLog *ev;
|
||||||
|
va_list args;
|
||||||
|
gsize len;
|
||||||
|
gsize sl;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
formatted = g_strdup_vprintf (format, args);
|
formatted = g_strdup_vprintf (format, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
|
|
||||||
sysprof_collector_log (severity, domain, formatted);
|
if (domain == NULL)
|
||||||
|
domain = "";
|
||||||
|
|
||||||
|
sl = strlen (formatted);
|
||||||
|
len = realign (sizeof *ev + sl + 1);
|
||||||
|
|
||||||
|
if ((ev = mapped_ring_buffer_allocate (collector->buffer, len)))
|
||||||
|
{
|
||||||
|
ev->frame.len = len;
|
||||||
|
ev->frame.type = SYSPROF_CAPTURE_FRAME_LOG;
|
||||||
|
ev->frame.cpu = _do_getcpu ();
|
||||||
|
ev->frame.pid = collector->pid;
|
||||||
|
ev->frame.time = SYSPROF_CAPTURE_CURRENT_TIME;
|
||||||
|
ev->severity = severity & 0xFFFF;
|
||||||
|
ev->padding1 = 0;
|
||||||
|
ev->padding2 = 0;
|
||||||
|
g_strlcpy (ev->domain, domain, sizeof ev->domain);
|
||||||
|
memcpy (ev->message, formatted, sl);
|
||||||
|
ev->message[sl] = 0;
|
||||||
|
|
||||||
|
mapped_ring_buffer_advance (collector->buffer, ev->frame.len);
|
||||||
|
}
|
||||||
|
} COLLECTOR_END;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user