summaryrefslogtreecommitdiffstats
path: root/src/verbose.h
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-09-04 14:40:14 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-09-07 09:43:13 +0200
commitb355a2a65511c32aaaddf289d70395f872bd4b26 (patch)
treed0ea719f73f8282e0d8da0d00a6c0afe4455b7f4 /src/verbose.h
parent36c7ab15e79d6b0ff6188b61da1061f36b902f8e (diff)
Improve handling of verbosity
The macros VERBOSE_NO_DATA and VERBOSE_NO_DETAILS can be used to tune what verbose parts are to be emitted: If VERBOSE_NO_DATA is defined then the macro will only report the file and the line that emitted the message. This mode is intended to reduce the count of static data in the binary. If VERBOSE_NO_DATA is not defined and VERBOSE_NO_DETAILS is defined, this is the opposite: the messages are emitted but not the file, line and function. When none of these 2 are difened, everything is emitted: the message and the details (file, line and function). At the same time the emission of the details (file, line, function) is not done for levels NOTICE, INFO, DEBUG on the console Change-Id: Ibb83cd435797fadf90626cb06bbda77f0f8b3cde Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/verbose.h')
-rw-r--r--src/verbose.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/verbose.h b/src/verbose.h
index 4b103ca8..402da404 100644
--- a/src/verbose.h
+++ b/src/verbose.h
@@ -73,12 +73,23 @@ enum log_levels
extern void verbose(int loglevel, const char *file, int line, const char *function, const char *fmt, ...) __attribute__((format(printf, 5, 6)));
extern void vverbose(int loglevel, const char *file, int line, const char *function, const char *fmt, va_list args);
-# define _VERBOSE_(vlvl,llvl,...) do{ if (verbosity >= vlvl) verbose(llvl, __FILE__, __LINE__, __func__, __VA_ARGS__); } while(0)
+#if defined(VERBOSE_NO_DATA)
+# define __VERBOSE__(lvl,...) do{if((lvl)<=Log_Level_Error) verbose(lvl, __FILE__, __LINE__, __func__, __VA_ARGS__)\
+ else verbose(lvl, __FILE__, __LINE__, __func__, NULL);}while(0)
+#elif defined(VERBOSE_NO_DETAILS)
+# define __VERBOSE__(lvl,...) verbose(lvl, NULL, 0, NULL, __VA_ARGS__)
+#else
+# define __VERBOSE__(lvl,...) verbose(lvl, __FILE__, __LINE__, __func__, __VA_ARGS__)
+#endif
+
+# define _VERBOSE_(vlvl,llvl,...) do{ if (verbosity >= vlvl) __VERBOSE__(llvl, __VA_ARGS__); } while(0)
+
# define ERROR(...) _VERBOSE_(Verbosity_Level_Error, Log_Level_Error, __VA_ARGS__)
# define WARNING(...) _VERBOSE_(Verbosity_Level_Warning, Log_Level_Warning, __VA_ARGS__)
# define NOTICE(...) _VERBOSE_(Verbosity_Level_Notice, Log_Level_Notice, __VA_ARGS__)
# define INFO(...) _VERBOSE_(Verbosity_Level_Info, Log_Level_Info, __VA_ARGS__)
# define DEBUG(...) _VERBOSE_(Verbosity_Level_Debug, Log_Level_Debug, __VA_ARGS__)
+
# define LOGUSER(app) verbose_set_name(app,0)
# define LOGAUTH(app) verbose_set_name(app,1)