void test_001(G_GNUC_UNUSED gpointer *fixture, G_GNUC_UNUSED gconstpointer data) { GType type = g_type_from_name("Log4gSimpleLayout"); g_assert(type); Log4gLayout *layout = g_object_new(type, NULL); g_assert(layout); log4g_layout_activate_options(layout); va_list ap; memset(&ap, 0, sizeof ap); Log4gLoggingEvent *event = log4g_logging_event_new("org.gnome.test", log4g_level_DEBUG(), __func__, __FILE__, G_STRINGIFY(__LINE__), "test message", ap); g_assert(event); type = g_type_from_name("Log4gConsoleAppender"); g_assert(type); Log4gAppender *appender = g_object_new(type, "target", "stdout", NULL); g_assert(appender); log4g_appender_set_layout(appender, layout); log4g_appender_activate_options(appender); g_object_unref(layout); log4g_appender_do_append(appender, event); log4g_appender_close(appender); g_object_unref(event); g_object_unref(appender); }
static void finalize(GObject *base) { struct Private *priv = GET_PRIVATE(base); log4g_appender_close(LOG4G_APPENDER(base)); g_free(priv->file); if (priv->lock) { g_mutex_free(priv->lock); } G_OBJECT_CLASS(log4g_file_appender_parent_class)->finalize(base); }
/** * log4g_logger_close_nested_appenders: * @self: A #Log4gLogger object. * * Close all attached appenders implementing the #Log4gAppenderAttachable * interface. * * See: #Log4gAppenderAttachableInterface * * Since: 0.1 */ void log4g_logger_close_nested_appenders(Log4gLogger *self) { const GArray *appenders = log4g_logger_get_all_appenders(self); if (!appenders) { return; } struct Private *priv = GET_PRIVATE(self); g_mutex_lock(priv->lock); for (guint i = 0; i < appenders->len; ++i) { Log4gAppender *appender = g_array_index(appenders, Log4gAppender *, i); if (LOG4G_IS_APPENDER_ATTACHABLE(appender)) { log4g_appender_close(appender); } } g_mutex_unlock(priv->lock); }