log: make the log tracer more verbose again

Define log formats per message type and print details.
This commit is contained in:
Stefan Sauer 2013-10-30 08:04:27 +01:00
parent 11d6e13d73
commit 75fb1f1a73
2 changed files with 41 additions and 7 deletions

View file

@ -166,8 +166,8 @@ Problems / Open items
Try it
======
GST_DEBUG="GST_REG*:4,GST_TRACER:4,log:7" GST_TRACE=log gst-launch-1.0 fakesrc num-buffers=10 ! fakesink
GST_DEBUG="GST_TRACER:4,GST_BUFFER*:7,log:7" GST_TRACE=log gst-launch-1.0 fakesrc num-buffers=10 ! fakesink
- traces for buffer flow in TRACE level and default category
GST_DEBUG="GST_REG*:4,GST_TRACER:4" GST_TRACE=stats gst-launch-1.0 fakesrc num-buffers=10 ! queue ! fakesink
GST_DEBUG="GST_TRACER:4" GST_TRACE=stats gst-launch-1.0 fakesrc num-buffers=10 ! queue ! fakesink
- print some pipeline stats on exit

View file

@ -27,9 +27,13 @@
GST_DEBUG_CATEGORY_STATIC (gst_log_debug);
#define GST_CAT_DEFAULT gst_log_debug
GST_DEBUG_CATEGORY_STATIC (GST_CAT_BUFFER);
GST_DEBUG_CATEGORY_STATIC (GST_CAT_BUFFER_LIST);
#define _do_init \
GST_DEBUG_CATEGORY_INIT (gst_log_debug, "log", 0, "log tracer");
GST_DEBUG_CATEGORY_INIT (gst_log_debug, "log", 0, "log tracer"); \
GST_DEBUG_CATEGORY_GET (GST_CAT_BUFFER, "GST_BUFFER"); \
GST_DEBUG_CATEGORY_GET (GST_CAT_BUFFER_LIST, "GST_BUFFER_LIST");
#define gst_log_tracer_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstLogTracer, gst_log_tracer, GST_TYPE_TRACER,
_do_init);
@ -55,13 +59,43 @@ static void
gst_log_tracer_invoke (GstTracer * self, GstTracerHookId hid,
GstTracerMessageId mid, va_list var_args)
{
const gchar *fmt = NULL;
GstDebugCategory *cat = GST_CAT_DEFAULT;
guint64 ts = va_arg (var_args, guint64);
/* TODO(ensonic): log to different categories depending on 'hid'/'mid'
* GST_TRACER_HOOK_ID_BUFFERS -> GST_CAT_BUFFER
/* TODO(ensonic): log to different categories depending on 'mid'
* GST_TRACER_HOOK_ID_EVENTS -> GST_CAT_EVENT
* GST_TRACER_HOOK_ID_MESSAGES -> GST_CAT_MESSAGE
* GST_TRACER_HOOK_ID_QUERIES -> ?
* GST_TRACER_HOOK_ID_QUERIES -> (static category)
* GST_TRACER_HOOK_ID_TOPLOGY -> ?
*/
GST_TRACE ("[%d,%d] %" GST_TIME_FORMAT, hid, mid, GST_TIME_ARGS (ts));
switch (mid) {
case GST_TRACER_MESSAGE_ID_PAD_PUSH_PRE:
cat = GST_CAT_BUFFER;
fmt = "pad=%" GST_PTR_FORMAT ", buffer=%" GST_PTR_FORMAT;
break;
case GST_TRACER_MESSAGE_ID_PAD_PUSH_POST:
cat = GST_CAT_BUFFER;
fmt = "pad=%" GST_PTR_FORMAT ", res=%d";
break;
case GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_PRE:
cat = GST_CAT_BUFFER_LIST;
fmt = "pad=%" GST_PTR_FORMAT ", list=%p";
break;
case GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_POST:
cat = GST_CAT_BUFFER_LIST;
fmt = "pad=%" GST_PTR_FORMAT ", res=%d";
break;
default:
break;
}
if (fmt) {
gchar *str = g_strdup_vprintf (fmt, var_args);
GST_CAT_TRACE (cat, "[%d,%d] %" GST_TIME_FORMAT ", %s",
hid, mid, GST_TIME_ARGS (ts), str);
g_free (str);
} else {
GST_CAT_TRACE (cat, "[%d,%d] %" GST_TIME_FORMAT,
hid, mid, GST_TIME_ARGS (ts));
}
}