aboutsummaryrefslogtreecommitdiffstats
path: root/src/conftest
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-12-22 17:19:28 +0100
committerMartin Willi <martin@revosec.ch>2011-01-05 16:46:06 +0100
commitdbec133eb877284f55de860e4dfa5af820f5e9fe (patch)
tree25ab9ac6a75d49d98e765a1e7062d9dced09c41a /src/conftest
parentc5f213cc0f941ae2982749549b2f57e7860c1f94 (diff)
downloadstrongswan-dbec133eb877284f55de860e4dfa5af820f5e9fe.tar.bz2
strongswan-dbec133eb877284f55de860e4dfa5af820f5e9fe.tar.xz
Added support for custom file loggers, loglevel settings
Diffstat (limited to 'src/conftest')
-rw-r--r--src/conftest/conftest.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/conftest/conftest.c b/src/conftest/conftest.c
index 3ba2313e5..93b162f5b 100644
--- a/src/conftest/conftest.c
+++ b/src/conftest/conftest.c
@@ -299,6 +299,55 @@ static void cleanup()
}
/**
+ * Load log levels for a logger from section
+ */
+static void load_log_levels(file_logger_t *logger, char *section)
+{
+ debug_t group;
+ level_t def;
+
+ def = conftest->test->get_int(conftest->test, "log.%s.default", 1, section);
+ for (group = 0; group < DBG_MAX; group++)
+ {
+ logger->set_level(logger, group,
+ conftest->test->get_int(conftest->test, "log.%s.%N", def,
+ section, debug_lower_names, group));
+ }
+}
+
+/**
+ * Load logger configuration
+ */
+static void load_loggers(file_logger_t *logger)
+{
+ enumerator_t *enumerator;
+ char *section;
+ FILE *file;
+
+ load_log_levels(logger, "stdout");
+
+ enumerator = conftest->test->create_section_enumerator(conftest->test, "log");
+ while (enumerator->enumerate(enumerator, &section))
+ {
+ if (!streq(section, "stdout"))
+ {
+ file = fopen(section, "w");
+ if (file == NULL)
+ {
+ fprintf(stderr, "opening file %s for logging failed: %s",
+ section, strerror(errno));
+ continue;
+ }
+ logger = file_logger_create(file, NULL, FALSE);
+ load_log_levels(logger, section);
+ charon->bus->add_listener(charon->bus, &logger->listener);
+ charon->file_loggers->insert_last(charon->file_loggers, logger);
+ }
+ }
+ enumerator->destroy(enumerator);
+}
+
+/**
* Main function, starts the conftest daemon.
*/
int main(int argc, char *argv[])
@@ -332,6 +381,7 @@ int main(int argc, char *argv[])
INIT(conftest,
.creds = mem_cred_create(),
);
+
logger = file_logger_create(stdout, NULL, FALSE);
logger->set_level(logger, DBG_ANY, LEVEL_CTRL);
charon->bus->add_listener(charon->bus, &logger->listener);
@@ -379,6 +429,8 @@ int main(int argc, char *argv[])
{
return 1;
}
+ load_loggers(logger);
+
if (!lib->plugins->load(lib->plugins, NULL,
conftest->test->get_str(conftest->test, "preload", "")))
{