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 abea126b916e3a81b5c8c20e69bd799b2cdb25b9..6df1d59961f66cfd98f461a57e11e6ef8c69b8e8 100644 (file)
--- a/log.h
+++ b/log.h
 
 #include "macro.h"
 
+/* 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_SYSLOG,
         LOG_TARGET_KMSG,
+        LOG_TARGET_SYSLOG,
+        LOG_TARGET_SYSLOG_OR_KMSG,
         _LOG_TARGET_MAX,
         _LOG_TARGET_INVALID = -1
 }  LogTarget;
@@ -40,20 +43,30 @@ 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);
+LogTarget log_get_target(void);
+int log_get_max_level(void);
+
+int log_open(void);
+
 void log_close_syslog(void);
-int log_open_syslog(void);
+void log_close_kmsg(void);
+void log_close_console(void);
 
 void log_parse_environment(void);
 
-void log_meta(
+int log_meta(
         int level,
         const char*file,
         int line,
         const char *func,
         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__)
 #define log_notice(...)  log_meta(LOG_NOTICE,  __FILE__, __LINE__, __func__, __VA_ARGS__)