Esempio n. 1
0
void
test_001(gpointer *fixture, 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);
	type = g_type_from_name("Log4gSyslogAppender");
	g_assert(type);
	Log4gAppender *appender = g_object_new(type,
			"ident", "syslog-appender-test",
			"option", LOG_USER,
			"facility", LOG_CONS,
			NULL);
	g_assert(appender);
	log4g_appender_set_layout(appender, layout);
	log4g_appender_activate_options(appender);
	g_object_unref(layout);
	for (gint i = 0; i < 5; ++i) {
		log4g_ndc_push("LOOP %d", i);
		va_list ap;
		memset(&ap, 0, sizeof ap);
		Log4gLoggingEvent *event = log4g_logging_event_new(
				"org.gnome.test", log4g_level_INFO(),
				__func__, __FILE__, G_STRINGIFY(__LINE__),
				"test message", ap);
		g_assert(event);
		log4g_appender_do_append(appender, event);
		g_object_unref(event);
		usleep(20);
	}
	g_object_unref(appender);
}
Esempio n. 2
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);
}
void
test_001(gpointer *fixture, gconstpointer data)
{
	GType type = g_type_from_name("Log4gTTCCLayout");
	g_assert(type);
	Log4gLayout *layout = g_object_new(type, NULL);
	g_assert(layout);
	log4g_layout_activate_options(layout);
	type = g_type_from_name("Log4gRollingFileAppender");
	g_assert(type);
	Log4gAppender *appender = g_object_new(type,
			"file", "rolling-file-appender-test.txt",
			"max-backup-index", 4,
			"maximum-file-size", 10,
			NULL);
	g_assert(appender);
	log4g_appender_set_layout(appender, layout);
	log4g_appender_activate_options(appender);
	g_object_unref(layout);
	for (gint i = 0; i < 10; ++i) {
		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);
		log4g_appender_do_append(appender, event);
		g_object_unref(event);
		usleep(20);
	}
	g_object_unref(appender);
}
Esempio n. 4
0
void
test_001(Fixture *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);
	g_message("%s", log4g_layout_format(layout, fixture->event));
	g_object_unref(layout);
}
Esempio n. 5
0
void
test_001(Fixture *fixture, gconstpointer data)
{
	GType type = g_type_from_name("Log4gXMLLayout");
	g_assert(type);
	Log4gLayout *layout = g_object_new(type,
			"properties", TRUE,
			"location-info", TRUE,
			NULL);
	g_assert(layout);
	log4g_layout_activate_options(layout);
	g_message("%s", log4g_layout_format(layout, fixture->event));
	g_object_unref(layout);
}
Esempio n. 6
0
static Log4gLayout *
parse_layout(Log4gConfigurator *base, xmlNodePtr node)
{
	Log4gLayout *layout = NULL;
	xmlChar *type = xmlGetProp(node, (const xmlChar *)"type");
	if (!type) {
		log4g_log_error(Q_("layouts must have a `type'"));
		goto exit;
	}
	GType gtype = g_type_from_name((const gchar *)type);
	if (!gtype) {
		log4g_log_error(Q_("%s: invalid `type'"), type);
		goto exit;
	}
	if (!G_TYPE_IS_INSTANTIATABLE(gtype)) {
		log4g_log_error(Q_("%s: is a non-instantiable type"), type);
		goto exit;
	}
	layout = g_object_new(gtype, NULL);
	if (!layout) {
		log4g_log_error(Q_("%s: g_object_new() returned NULL"), type);
		goto exit;
	}
	if (!LOG4G_IS_LAYOUT(layout)) {
		log4g_log_error(Q_("%s: not an instance of Log4gLayout"), type);
		g_object_unref(layout);
		layout = NULL;
		goto exit;
	}
	node = node->xmlChildrenNode;
	while (node) {
		if (!xmlStrcmp(node->name, (const xmlChar *)"property")) {
			parse_property(base, node, layout);
		} else if (!xmlStrcmp(node->name, (const xmlChar *)"text")) {
			log4g_log_warn(Q_("invalid text element"));
		} else if (!xmlStrcmp(node->name, (const xmlChar *)"comment")) {
			/* do nothing */
		} else {
			log4g_log_warn(Q_("%s: invalid element"), node->name);
		}
		node = node->next;
	}
	log4g_layout_activate_options(layout);
exit:
	if (type) {
		xmlFree(type);
	}
	return layout;
}
Esempio n. 7
0
void
test_001(Fixture *fixture, gconstpointer data)
{
	GType type = g_type_from_name("Log4gPatternLayout");
	g_assert(type);
	Log4gLayout *layout = g_object_new(type,
			"conversion-pattern",
				"[%d{%c}] [%t] [%.7c{2}] %M(%F:%L) "
				"[%.5m] [%20p] [%r] [%X{foo}] [%x] %m%n",
			NULL);
	g_assert(layout);
	log4g_layout_activate_options(layout);
	g_message("%s", log4g_layout_format(layout, fixture->event));
	g_object_unref(layout);
}
Esempio n. 8
0
/**
 * log4g_basic_configurator_configure:
 *
 * Quickly configure Log4g.
 *
 * This function adds a console appender to the root logger that uses the
 * TTCC layout and prints to stdout.
 *
 * See: #Log4gRootLogger, #Log4gTTCCLayout
 *
 * Since: 0.1
 */
void
log4g_basic_configurator_configure(void)
{
	Log4gLayout *layout = NULL;
	Log4gAppender *appender = NULL;
	Log4gLogger *root = log4g_logger_get_root_logger();
	if (!root) {
		log4g_log_error(Q_("log4g_logger_get_root_logger() "
					"returned NULL"));
		return;
	}
	GType type = g_type_from_name("Log4gTTCCLayout");
	if (!type) {
		log4g_log_warn(Q_("Log4gTTCCLayout: type not found"));
		return;
	}
	layout = g_object_new(type, NULL);
	if (!layout) {
		log4g_log_error(Q_("g_object_new() returned NULL"));
		return;
	}
	log4g_layout_activate_options(layout);
	type = g_type_from_name("Log4gConsoleAppender");
	if (!type) {
		log4g_log_warn(Q_("Log4gTTCCLayout: type not found"));
		goto exit;
	}
	appender = g_object_new(type, NULL);
	if (!layout) {
		log4g_log_error(Q_("g_object_new() returned NULL"));
		goto exit;
	}
	log4g_appender_set_layout(appender, layout);
	log4g_appender_activate_options(appender);
	log4g_logger_add_appender(root, appender);
exit:
	if (layout) {
		g_object_unref(layout);
	}
	if (appender) {
		g_object_unref(appender);
	}
}
Esempio n. 9
0
void
test_001(G_GNUC_UNUSED gpointer *fixture, G_GNUC_UNUSED gconstpointer data)
{
	GType type = g_type_from_name("Log4gHTMLLayout");
	g_assert(type);
	Log4gLayout *layout = g_object_new(type,
			"title", "Hello, World!",
			"location-info", TRUE,
			NULL);
	g_assert(layout);
	log4g_layout_activate_options(layout);
	type = g_type_from_name("Log4gFileAppender");
	g_assert(type);
	Log4gAppender *appender = g_object_new(type,
			"file", "tests/file-appender-test.html",
			"append", FALSE,
			"buffered-io", TRUE,
			NULL);
	g_assert(appender);
	log4g_appender_set_layout(appender, layout);
	log4g_appender_activate_options(appender);
	g_object_unref(layout);
	va_list ap;
	memset(&ap, 0, sizeof ap);
	for (gint i = 0; i < 5; ++i) {
		log4g_ndc_push("LOOP %d", i);
		Log4gLoggingEvent *event = log4g_logging_event_new(
				"org.gnome.test", log4g_level_DEBUG(),
				__func__, __FILE__, G_STRINGIFY(__LINE__),
				"test message", ap);
		g_assert(event);
		log4g_appender_do_append(appender, event);
		g_object_unref(event);
		usleep(20);
	}
	g_object_unref(appender);
}