The logging functions can now be used on any GObject, not just UObject
subclasses. In particular, it should be possible to call it on UPkg
instances which do not derive from UObject.
/* Logging helpers that automatically prepend the UObject class information. */
void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap)
{
/* Logging helpers that automatically prepend the UObject class information. */
void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap)
{
- g_return_if_fail(IS_U_OBJECT(o));
- UObject *uo = U_OBJECT(o);
- char *new_fmt = NULL;
-
- if (uo->pkg_name) {
- new_fmt = prepend_fmt(uo->pkg_name, fmt);
- if (!new_fmt) {
- g_log(G_OBJECT_TYPE_NAME(o), level, "%s",
- uo->pkg_file->name);
- } else {
+ char *new_fmt = NULL, *obj_prefix = NULL;
+
+ if (IS_U_OBJECT(o)) {
+ obj_prefix = U_OBJECT(o)->pkg_name;
+ } else if (G_IS_TYPE_MODULE(o)) {
+ obj_prefix = G_TYPE_MODULE(o)->name;
+ }
+
+ if (obj_prefix) {
+ new_fmt = prepend_fmt(obj_prefix, fmt);
+ if (!new_fmt)
+ g_log(G_OBJECT_TYPE_NAME(o), level, "%s", obj_prefix);
+ else
}
g_logv(G_OBJECT_TYPE_NAME(o), level, fmt, ap);
}
g_logv(G_OBJECT_TYPE_NAME(o), level, fmt, ap);