我的 C++ 应用程序中运行着 gstreamer 管道。为了检查与这些问题相关的问题,我通过设置变量 GST_DEBUG 来启用打印调试信息,如本页所述:https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html?gi-language= c。 但是,这会直接打印在 cout 上,并且我在应用程序中使用日志库 (log4cplus)。由于 gstreamer 调试信息的分类与 log4cplus 中的分类非常相似(错误、警告、调试等),我预计可以在记录器中重定向这些消息,但我找不到任何有关如何执行此操作的信息.
我之前使用过Qt框架,它有一个函数“qInstallMessageHandler”,可以将qt日志重定向到自定义记录器。 gstreamer有类似的东西吗?
我对此没有经验,但看起来您可以注册一个C函数,Gstreamer框架在记录时将调用该函数。
static void gst_log_handler(GstDebugCategory *category,
GstDebugLevel level, const gchar *file, const gchar *function,
gint line, GObject *object, GstDebugMessage *message, gpointer user_data) {
// Convert into log4cplus::spi::InternalLoggingEvent and log it.
}
// Somewhere else then register it:
gst_debug_add_log_function(debug_category, gst_log_handler, nullptr);