From a0fcec3a3d147f8d347af8f5fb2004b4a310b358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 17 Dec 2019 19:07:28 +0100 Subject: [PATCH] log: caller can control syslog level --- client.c | 2 +- log.c | 18 +++++++++++++++--- log.h | 2 +- main.c | 4 ++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/client.c b/client.c index 3366ca0a..d581429b 100644 --- a/client.c +++ b/client.c @@ -40,7 +40,7 @@ print_usage(const char *prog_name) int main(int argc, char *const *argv) { - log_init(LOG_FACILITY_USER); + log_init(LOG_FACILITY_USER, LOG_CLASS_WARNING); int ret = EXIT_FAILURE; const char *const prog_name = argv[0]; diff --git a/log.c b/log.c index da026d60..61605944 100644 --- a/log.c +++ b/log.c @@ -13,17 +13,29 @@ static bool colorize = false; +static void __attribute__((constructor)) +init(void) +{ + colorize = isatty(STDOUT_FILENO); +} + void -log_init(enum log_facility syslog_facility) +log_init(enum log_facility syslog_facility, enum log_class syslog_level) { static const int facility_map[] = { [LOG_FACILITY_USER] = LOG_USER, [LOG_FACILITY_DAEMON] = LOG_DAEMON, }; - colorize = isatty(STDOUT_FILENO); + static const int level_map[] = { + [LOG_CLASS_ERROR] = LOG_ERR, + [LOG_CLASS_WARNING] = LOG_WARNING, + [LOG_CLASS_INFO] = LOG_INFO, + [LOG_CLASS_DEBUG] = LOG_DEBUG, + }; + openlog(NULL, /*LOG_PID*/0, facility_map[syslog_facility]); - setlogmask(LOG_UPTO(LOG_WARNING)); + setlogmask(LOG_UPTO(level_map[syslog_level])); } void diff --git a/log.h b/log.h index f0da5158..eb8a9d21 100644 --- a/log.h +++ b/log.h @@ -3,7 +3,7 @@ enum log_facility { LOG_FACILITY_USER, LOG_FACILITY_DAEMON }; enum log_class { LOG_CLASS_ERROR, LOG_CLASS_WARNING, LOG_CLASS_INFO, LOG_CLASS_DEBUG }; -void log_init(enum log_facility syslog_facility); +void log_init(enum log_facility syslog_facility, enum log_class syslog_level); void log_deinit(void); void log_msg(enum log_class log_class, const char *module, diff --git a/main.c b/main.c index 938aa992..99e52976 100644 --- a/main.c +++ b/main.c @@ -165,6 +165,8 @@ main(int argc, char *const *argv) } } + log_init(as_server ? LOG_FACILITY_DAEMON : LOG_FACILITY_USER, LOG_CLASS_WARNING); + argc -= optind; argv += optind; @@ -176,8 +178,6 @@ main(int argc, char *const *argv) struct server *server = NULL; struct shutdown_context shutdown_ctx = {.term = &term, .exit_code = EXIT_FAILURE}; - log_init(as_server ? LOG_FACILITY_DAEMON : LOG_FACILITY_USER); - if ((fdm = fdm_init()) == NULL) goto out;