Make syslog and file loggers configurable at runtime
This commit is contained in:
+17
-35
@@ -250,8 +250,6 @@ static void initialize_loggers(bool use_stderr, level_t levels[])
|
||||
int loggers_defined = 0;
|
||||
debug_t group;
|
||||
level_t def;
|
||||
bool append, ike_name;
|
||||
FILE *file;
|
||||
|
||||
/* setup sysloggers */
|
||||
identifier = lib->settings->get_str(lib->settings,
|
||||
@@ -266,20 +264,22 @@ static void initialize_loggers(bool use_stderr, level_t levels[])
|
||||
{
|
||||
loggers_defined++;
|
||||
|
||||
ike_name = lib->settings->get_bool(lib->settings,
|
||||
"charon.syslog.%s.ike_name", FALSE, facility);
|
||||
if (streq(facility, "daemon"))
|
||||
{
|
||||
sys_logger = sys_logger_create(LOG_DAEMON, ike_name);
|
||||
sys_logger = sys_logger_create(LOG_DAEMON);
|
||||
}
|
||||
else if (streq(facility, "auth"))
|
||||
{
|
||||
sys_logger = sys_logger_create(LOG_AUTHPRIV, ike_name);
|
||||
sys_logger = sys_logger_create(LOG_AUTHPRIV);
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
sys_logger->set_options(sys_logger,
|
||||
lib->settings->get_bool(lib->settings,
|
||||
"charon.syslog.%s.ike_name", FALSE, facility));
|
||||
|
||||
def = lib->settings->get_int(lib->settings,
|
||||
"charon.syslog.%s.default", 1, facility);
|
||||
for (group = 0; group < DBG_MAX; group++)
|
||||
@@ -300,36 +300,17 @@ static void initialize_loggers(bool use_stderr, level_t levels[])
|
||||
while (enumerator->enumerate(enumerator, &filename))
|
||||
{
|
||||
loggers_defined++;
|
||||
if (streq(filename, "stderr"))
|
||||
{
|
||||
file = stderr;
|
||||
}
|
||||
else if (streq(filename, "stdout"))
|
||||
{
|
||||
file = stdout;
|
||||
}
|
||||
else
|
||||
{
|
||||
append = lib->settings->get_bool(lib->settings,
|
||||
"charon.filelog.%s.append", TRUE, filename);
|
||||
file = fopen(filename, append ? "a" : "w");
|
||||
if (file == NULL)
|
||||
{
|
||||
DBG1(DBG_DMN, "opening file %s for logging failed: %s",
|
||||
filename, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
if (lib->settings->get_bool(lib->settings,
|
||||
"charon.filelog.%s.flush_line", FALSE, filename))
|
||||
{
|
||||
setlinebuf(file);
|
||||
}
|
||||
}
|
||||
file_logger = file_logger_create(file,
|
||||
file_logger = file_logger_create(filename);
|
||||
file_logger->set_options(file_logger,
|
||||
lib->settings->get_str(lib->settings,
|
||||
"charon.filelog.%s.time_format", NULL, filename),
|
||||
lib->settings->get_bool(lib->settings,
|
||||
"charon.filelog.%s.ike_name", FALSE, filename));
|
||||
file_logger->open(file_logger,
|
||||
lib->settings->get_bool(lib->settings,
|
||||
"charon.filelog.%s.flush_line", FALSE, filename),
|
||||
lib->settings->get_bool(lib->settings,
|
||||
"charon.filelog.%s.append", TRUE, filename));
|
||||
def = lib->settings->get_int(lib->settings,
|
||||
"charon.filelog.%s.default", 1, filename);
|
||||
for (group = 0; group < DBG_MAX; group++)
|
||||
@@ -349,10 +330,11 @@ static void initialize_loggers(bool use_stderr, level_t levels[])
|
||||
if (!loggers_defined)
|
||||
{
|
||||
/* set up default stdout file_logger */
|
||||
file_logger = file_logger_create(stdout, NULL, FALSE);
|
||||
file_logger = file_logger_create("stdout");
|
||||
file_logger->open(file_logger, FALSE, FALSE);
|
||||
charon->file_loggers->insert_last(charon->file_loggers, file_logger);
|
||||
/* set up default daemon sys_logger */
|
||||
sys_logger = sys_logger_create(LOG_DAEMON, FALSE);
|
||||
sys_logger = sys_logger_create(LOG_DAEMON);
|
||||
charon->sys_loggers->insert_last(charon->sys_loggers, sys_logger);
|
||||
for (group = 0; group < DBG_MAX; group++)
|
||||
{
|
||||
@@ -366,7 +348,7 @@ static void initialize_loggers(bool use_stderr, level_t levels[])
|
||||
charon->bus->add_logger(charon->bus, &sys_logger->logger);
|
||||
|
||||
/* set up default auth sys_logger */
|
||||
sys_logger = sys_logger_create(LOG_AUTHPRIV, FALSE);
|
||||
sys_logger = sys_logger_create(LOG_AUTHPRIV);
|
||||
sys_logger->set_level(sys_logger, DBG_ANY, LEVEL_AUDIT);
|
||||
charon->sys_loggers->insert_last(charon->sys_loggers, sys_logger);
|
||||
charon->bus->add_logger(charon->bus, &sys_logger->logger);
|
||||
|
||||
Reference in New Issue
Block a user