Added support for custom file loggers, loglevel settings
This commit is contained in:
@@ -298,6 +298,55 @@ static void cleanup()
|
|||||||
library_deinit();
|
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.
|
* Main function, starts the conftest daemon.
|
||||||
*/
|
*/
|
||||||
@@ -332,6 +381,7 @@ int main(int argc, char *argv[])
|
|||||||
INIT(conftest,
|
INIT(conftest,
|
||||||
.creds = mem_cred_create(),
|
.creds = mem_cred_create(),
|
||||||
);
|
);
|
||||||
|
|
||||||
logger = file_logger_create(stdout, NULL, FALSE);
|
logger = file_logger_create(stdout, NULL, FALSE);
|
||||||
logger->set_level(logger, DBG_ANY, LEVEL_CTRL);
|
logger->set_level(logger, DBG_ANY, LEVEL_CTRL);
|
||||||
charon->bus->add_listener(charon->bus, &logger->listener);
|
charon->bus->add_listener(charon->bus, &logger->listener);
|
||||||
@@ -379,6 +429,8 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
load_loggers(logger);
|
||||||
|
|
||||||
if (!lib->plugins->load(lib->plugins, NULL,
|
if (!lib->plugins->load(lib->plugins, NULL,
|
||||||
conftest->test->get_str(conftest->test, "preload", "")))
|
conftest->test->get_str(conftest->test, "preload", "")))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user