summaryrefslogtreecommitdiff
path: root/src/log.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/log.h')
-rw-r--r--src/log.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/log.h b/src/log.h
new file mode 100644
index 0000000..d53b795
--- /dev/null
+++ b/src/log.h
@@ -0,0 +1,47 @@
+#ifndef __LOG_H
+#define __LOG_H
+
+#include "config.h"
+
+#if CONFIG_USE_SYSLOG
+# include <syslog.h>
+# define LOG_FACILITY LOG_USER
+
+# define __log(level, name, format, args...) \
+ syslog(LOG_FACILITY | level, "[" name "] %s:%s:%d: " format "\n" , \
+ __FILE__ , __func__ , __LINE__ , ## args)
+#else
+# define __log(level, name, format, args...) \
+ fprintf(stderr, "[" name "] %s:%s:%d: " format "\n" , \
+ __FILE__ , __func__ , __LINE__ , ## args)
+#endif
+
+#define log_emerg(format, args...) __log(LOG_EMERG, "EMERG", format , ## args)
+#define log_alert(format, args...) __log(LOG_ALERT, "ALERT", format , ## args)
+#define log_crit(format, args...) __log(LOG_CRIT, "CRIT", format , ## args)
+#define log_error(format, args...) __log(LOG_ERR, "ERROR", format , ## args)
+#define log_warning(format, args...) __log(LOG_WARNING, "WARNING", format , ## args)
+#define log_notice(format, args...) __log(LOG_NOTICE, "NOTICE", format , ## args)
+#define log_info(format, args...) __log(LOG_INFO, "INFO", format , ## args)
+#if DEBUG
+# define log_debug(format, args...) __log(LOG_DEBUG, "DEBUG", format , ## args)
+#else
+# define log_debug(format, args...) do {} while (0)
+#endif
+
+#if DEBUG
+# define debug_buffer(msg, buf, len) \
+do { \
+ __log(LOG_DEBUG, "DEBUG", msg " \"%.*J\"", len, buf); \
+} while (0)
+#else
+# define debug_buffer(_msg, _buf, _len) do { } while (0)
+#endif
+
+#define BUG(format, args...) \
+do { \
+ log_emerg("BUG: " format , ## args); \
+ exit(124); \
+} while (0)
+
+#endif /* ~__LOG_H */