summaryrefslogtreecommitdiff
path: root/include/ouroboros/logs.h
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@intec.ugent.be>2017-02-08 17:09:55 +0100
committerdimitri staessens <dimitri.staessens@intec.ugent.be>2017-02-08 18:04:13 +0100
commit742d01a4f9a32f17561104ee7da8971c1bcdd703 (patch)
tree26a9c0b622b5bf875b783692837d1069799f8fcc /include/ouroboros/logs.h
parent9117f7f6fec70f2da24e8e77256747d11d67bf8d (diff)
downloadouroboros-742d01a4f9a32f17561104ee7da8971c1bcdd703.tar.gz
ouroboros-742d01a4f9a32f17561104ee7da8971c1bcdd703.zip
lib: Log to the logging system
This removes the logfile and outputs log messages to the logging system. The creation of the logfiles (as well as the ap_init() call) were moved into ipcp_init() to simplify the IPCP creation and shutdown. Fixes #25 Fixes #27
Diffstat (limited to 'include/ouroboros/logs.h')
-rw-r--r--include/ouroboros/logs.h56
1 files changed, 22 insertions, 34 deletions
diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h
index 4767a6f6..9b83abd2 100644
--- a/include/ouroboros/logs.h
+++ b/include/ouroboros/logs.h
@@ -28,61 +28,49 @@
#include <unistd.h>
#include <stdio.h>
#include <stdbool.h>
+#include <syslog.h>
#ifndef OUROBOROS_PREFIX
#error You must define OUROBOROS_PREFIX before including this file
#endif
-int set_logfile(char * filename);
-void close_logfile(void);
+void log_init(bool sysout);
-#define ANSI_COLOR_RED "\x1b[31m"
-#define ANSI_COLOR_GREEN "\x1b[32m"
-#define ANSI_COLOR_YELLOW "\x1b[33m"
-#define ANSI_COLOR_BLUE "\x1b[34m"
-#define ANSI_COLOR_RESET "\x1b[0m"
+void log_fini(void);
+
+#define CLR_RED "\x1b[31m"
+#define CLR_GREEN "\x1b[32m"
+#define CLR_YELLOW "\x1b[33m"
+#define CLR_RESET "\x1b[0m"
#define DEBUG_CODE "DB"
#define ERROR_CODE "EE"
#define WARN_CODE "WW"
#define INFO_CODE "II"
-#define IMPL_CODE "NI"
-extern FILE * logfile;
+extern bool log_syslog;
-#define __LOG(CLR, FUNC, LVL, ...) \
+#define __olog(CLR, LVL, SYSLVL, ...) \
do { \
- if (logfile != NULL) { \
- fprintf(logfile, OUROBOROS_PREFIX); \
- fprintf(logfile, "(" LVL "): "); \
- if (FUNC) \
- fprintf(logfile, "%s: ", __FUNCTION__); \
- fprintf(logfile, __VA_ARGS__); \
- fprintf(logfile, "\n"); \
- fflush(logfile); \
+ if (log_syslog) { \
+ syslog(SYSLVL, OUROBOROS_PREFIX ": " \
+ __VA_ARGS__); \
} else { \
- printf(CLR "==%05d== ", getpid()); \
- printf(OUROBOROS_PREFIX "(" LVL "): "); \
- if (FUNC) \
- printf("%s: ", __FUNCTION__); \
+ printf(CLR "==%05d== " OUROBOROS_PREFIX \
+ "(" LVL "): ", getpid()); \
printf(__VA_ARGS__); \
- printf(ANSI_COLOR_RESET "\n"); \
+ printf(CLR_RESET "\n"); \
} \
} while (0)
-#define LOG_ERR(...) __LOG(ANSI_COLOR_RED, false, ERROR_CODE, __VA_ARGS__)
-#define LOG_WARN(...) __LOG(ANSI_COLOR_YELLOW, false, WARN_CODE, __VA_ARGS__)
-#define LOG_INFO(...) __LOG(ANSI_COLOR_GREEN, false, INFO_CODE, __VA_ARGS__)
-#define LOG_NI(...) __LOG(ANSI_COLOR_BLUE, false, IMPL_CODE, __VA_ARGS__)
+#define log_err(...) __olog(CLR_RED, ERROR_CODE, LOG_ERR, __VA_ARGS__)
+#define log_warn(...) __olog(CLR_YELLOW, WARN_CODE, LOG_WARNING, __VA_ARGS__)
+#define log_info(...) __olog(CLR_GREEN, INFO_CODE, LOG_INFO, __VA_ARGS__)
#ifdef CONFIG_OUROBOROS_DEBUG
-#define LOG_DBG(...) __LOG("", false, DEBUG_CODE, __VA_ARGS__)
-#define LOG_DBGF(...) __LOG("", true, DEBUG_CODE, __VA_ARGS__)
+#define log_dbg(...) __olog("", DEBUG_CODE, LOG_DEBUG, __VA_ARGS__)
#else
-#define LOG_DBG(...) do { } while (0)
-#define LOG_DBGF(...) do { } while (0)
+#define log_dbg(...) do { } while (0)
#endif
-#define LOG_MISSING LOG_NI("Missing code in %s:%d",__FILE__, __LINE__)
-
-#endif
+#endif /* OUROBOROS_LOGS_H */