From: Martin Willi Date: Wed, 22 Dec 2010 16:19:28 +0000 (+0100) Subject: Added support for custom file loggers, loglevel settings X-Git-Tag: 4.5.1~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbec133eb877284f55de860e4dfa5af820f5e9fe;p=thirdparty%2Fstrongswan.git Added support for custom file loggers, loglevel settings --- diff --git a/src/conftest/conftest.c b/src/conftest/conftest.c index 3ba2313e50..93b162f5b8 100644 --- a/src/conftest/conftest.c +++ b/src/conftest/conftest.c @@ -298,6 +298,55 @@ static void cleanup() library_deinit(); } +/** + * 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, §ion)) + { + 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. */ @@ -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", ""))) {