From 4a3e3f1b9eef457f3f216d2b2a4ccf0a32eb9599 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 6 Jul 2016 18:58:56 +0200 Subject: lib, irmd, ipcpd: Provide the feature to write to logs Writing output to log files is now enabled by default. Logs are written to /var/log/ouroboros, which is created on install. There is a log file for the irmd and one per IPCP. To still get (colored) output on stdout, provide the --stdout switch when starting the irmd. Fixes #17 --- include/ouroboros/config.h.in | 1 + include/ouroboros/logs.h | 47 ++++++++++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/ouroboros/config.h.in b/include/ouroboros/config.h.in index 4cbed554..c11c2d05 100644 --- a/include/ouroboros/config.h.in +++ b/include/ouroboros/config.h.in @@ -44,5 +44,6 @@ #define IRMD_MAX_FLOWS 4096 #define IRMD_THREADPOOL_SIZE 3 #define IRMD_FLOW_TIMEOUT 5000 /* ms */ +#define LOG_DIR "/@LOG_DIR@/" #endif diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h index 344a7ddc..601d8340 100644 --- a/include/ouroboros/logs.h +++ b/include/ouroboros/logs.h @@ -30,32 +30,51 @@ #error You must define OUROBOROS_PREFIX before including this file #endif +int set_logfile(char * filename); + #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" -#define __LOG(CLR, PFX, LVL, FMT, ARGS...) \ - do { printf(CLR PFX "(" LVL "): " FMT ANSI_COLOR_RESET "\n", ##ARGS); }\ - while (0) +#define DEBUG_CODE "DB" +#define ERROR_CODE "EE" +#define WARN_CODE "WW" +#define INFO_CODE "II" +#define IMPL_CODE "NI" + +extern FILE * logfile; + +#define __LOG(CLR, LVL, FMT, ARGS...) \ + do { \ + if (logfile != NULL) { \ + fprintf(logfile, \ + OUROBOROS_PREFIX "(" LVL "): " \ + FMT ANSI_COLOR_RESET "\n", ##ARGS); \ + fflush(logfile); \ + } else { \ + printf(CLR OUROBOROS_PREFIX "(" LVL "): " \ + FMT ANSI_COLOR_RESET "\n", ##ARGS); \ + } \ + } while (0) -#define LOG_ERR(FMT, ARGS...) __LOG(ANSI_COLOR_RED, OUROBOROS_PREFIX, \ - "EE", FMT, ##ARGS) -#define LOG_WARN(FMT, ARGS...) __LOG(ANSI_COLOR_YELLOW, OUROBOROS_PREFIX, \ - "WW", FMT, ##ARGS) -#define LOG_INFO(FMT, ARGS...) __LOG(ANSI_COLOR_GREEN, OUROBOROS_PREFIX, \ - "II", FMT, ##ARGS) -#define LOG_NI(FMT, ARGS...) __LOG(ANSI_COLOR_BLUE, OUROBOROS_PREFIX, \ - "NI", FMT, ##ARGS) +#define LOG_ERR(FMT, ARGS...) __LOG(ANSI_COLOR_RED, \ + ERROR_CODE, FMT, ##ARGS) +#define LOG_WARN(FMT, ARGS...) __LOG(ANSI_COLOR_YELLOW, \ + WARN_CODE, FMT, ##ARGS) +#define LOG_INFO(FMT, ARGS...) __LOG(ANSI_COLOR_GREEN, \ + INFO_CODE, FMT, ##ARGS) +#define LOG_NI(FMT, ARGS...) __LOG(ANSI_COLOR_BLUE, \ + IMPL_CODE, FMT, ##ARGS) #ifdef CONFIG_OUROBOROS_DEBUG -#define LOG_DBG(FMT, ARGS...) __LOG("", OUROBOROS_PREFIX, "DB", FMT, ##ARGS) +#define LOG_DBG(FMT, ARGS...) __LOG("", DEBUG_CODE, FMT, ##ARGS) #else -#define LOG_DBG(FMT, ARGS...) do { } while (0) +#define LOG_DBG(FMT, ARGS...) do { } while (0) #endif -#define LOG_DBGF(FMT, ARGS...) LOG_DBG("%s: " FMT, __FUNCTION__, ##ARGS) +#define LOG_DBGF(FMT, ARGS...) LOG_DBG("%s: " FMT, __FUNCTION__, ##ARGS) #define LOG_MISSING LOG_NI("Missing code in %s:%d",__FILE__, __LINE__) -- cgit v1.2.3 From bb85e730783ae34808e42c3107759f43106a9b1d Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 6 Jul 2016 19:06:02 +0200 Subject: lib: Fix crapped up indentation This fixes some crapped up indentation in logs.h --- include/ouroboros/logs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h index 601d8340..0ffc5699 100644 --- a/include/ouroboros/logs.h +++ b/include/ouroboros/logs.h @@ -46,11 +46,11 @@ int set_logfile(char * filename); extern FILE * logfile; -#define __LOG(CLR, LVL, FMT, ARGS...) \ +#define __LOG(CLR, LVL, FMT, ARGS...) \ do { \ if (logfile != NULL) { \ fprintf(logfile, \ - OUROBOROS_PREFIX "(" LVL "): " \ + OUROBOROS_PREFIX "(" LVL "): " \ FMT ANSI_COLOR_RESET "\n", ##ARGS); \ fflush(logfile); \ } else { \ -- cgit v1.2.3