chiark / gitweb /
manager: rearrange order of mainloop, put gc/cleanup last to maximize reusing
[elogind.git] / log.h
diff --git a/log.h b/log.h
index cd78a0a50bacba172abfb7d5ca7dee785a09b93a..6df1d59961f66cfd98f461a57e11e6ef8c69b8e8 100644 (file)
--- a/log.h
+++ b/log.h
 
 #include "macro.h"
 
-void log_meta(
+/* If set to SYSLOG and /dev/log can not be opened we fall back to
+ * KSMG. If KMSG fails, we fall back to CONSOLE */
+typedef enum LogTarget{
+        LOG_TARGET_CONSOLE,
+        LOG_TARGET_KMSG,
+        LOG_TARGET_SYSLOG,
+        LOG_TARGET_SYSLOG_OR_KMSG,
+        _LOG_TARGET_MAX,
+        _LOG_TARGET_INVALID = -1
+}  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);
+
+LogTarget log_get_target(void);
+int log_get_max_level(void);
+
+int log_open(void);
+
+void log_close_syslog(void);
+void log_close_kmsg(void);
+void log_close_console(void);
+
+void log_parse_environment(void);
+
+int log_meta(
         int level,
         const char*file,
         int line,
         const char *func,
-        const char *format, ...) __printf_attr(5,6);
+        const char *format, ...) _printf_attr(5,6);
+
+_noreturn void log_assert(
+        const char*file,
+        int line,
+        const char *func,
+        const char *format, ...) _printf_attr(4,5);
 
 #define log_debug(...)   log_meta(LOG_DEBUG,   __FILE__, __LINE__, __func__, __VA_ARGS__)
 #define log_info(...)    log_meta(LOG_INFO,    __FILE__, __LINE__, __func__, __VA_ARGS__)
@@ -39,4 +73,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