diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-06 23:38:32 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-06 23:38:32 +0200 |
commit | 34f0e866d321ed3f585d7510804fc551af6abaa0 (patch) | |
tree | 2f75411bbbc2680082798656078a5a9754faf2ce | |
parent | d3725859f3d80972d7da3a73b92e58a06ac7d69a (diff) |
log: read log settings from the environment
-rw-r--r-- | log.c | 40 | ||||
-rw-r--r-- | log.h | 8 |
2 files changed, 48 insertions, 0 deletions
@@ -272,3 +272,43 @@ void log_meta( errno = saved_errno; } + +int log_set_target_from_string(const char *e) { + LogTarget t; + + if ((t = log_target_from_string(e)) < 0) + return -EINVAL; + + log_set_target(t); + return 0; +} + +int log_set_max_level_from_string(const char *e) { + int t; + + if ((t = log_level_from_string(e)) < 0) + return -EINVAL; + + log_set_max_level(t); + return 0; +} + +void log_parse_environment(void) { + const char *e; + + if ((e = getenv("SYSTEMD_LOG_TARGET"))) + if (log_set_target_from_string(e) < 0) + log_warning("Failed to parse log target %s. Ignoring.", e); + + if ((e = getenv("SYSTEMD_LOG_LEVEL"))) + if (log_set_max_level_from_string(e) < 0) + log_warning("Failed to parse log level %s. Ignoring.", e); +} + +static const char *const log_target_table[] = { + [LOG_TARGET_CONSOLE] = "console", + [LOG_TARGET_SYSLOG] = "syslog", + [LOG_TARGET_KMSG] = "kmsg", +}; + +DEFINE_STRING_TABLE_LOOKUP(log_target, LogTarget); @@ -37,11 +37,16 @@ typedef enum LogTarget{ void log_set_target(LogTarget target); void log_set_max_level(int level); +int log_set_target_from_string(const char *e); +int log_set_max_level_from_string(const char *e); + void log_close_kmsg(void); int log_open_kmsg(void); void log_close_syslog(void); int log_open_syslog(void); +void log_parse_environment(void); + void log_meta( int level, const char*file, @@ -55,4 +60,7 @@ void log_meta( #define log_warning(...) log_meta(LOG_WARNING, __FILE__, __LINE__, __func__, __VA_ARGS__) #define log_error(...) log_meta(LOG_ERR, __FILE__, __LINE__, __func__, __VA_ARGS__) +const char *log_target_to_string(LogTarget target); +LogTarget log_target_from_string(const char *s); + #endif |