Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
/**
 * 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);
}