From 3e56dc3fc7ce31cb932fbd86e78eea02049d0b7e Mon Sep 17 00:00:00 2001 From: José Bollo Date: Mon, 4 Sep 2017 14:40:14 +0200 Subject: Improve handling of verbosity in bindings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The macro AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO is removed. The macro AFB_BINDING_PRAGMA_NO_VERBOSE_UNPREFIX is removed. The macro AFB_BINDING_PRAGMA_KEEP_VERBOSE_UNPREFIX is now used to activate the weakly named verbose macros DEBUG, INFO, NOTICE, WARNING, ERROR. The macros AFB_BINDING_PRAGMA_NO_VERBOSE_DATA and AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS can be used to tune what verbose parts are to be emitted: If AFB_BINDING_PRAGMA_NO_VERBOSE_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 plugin the binary. If AFB_BINDING_PRAGMA_NO_VERBOSE_DATA is not defined and AFB_BINDING_PRAGMA_NO_VERBOSE_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. Change-Id: Ibb83cd435797fadf90626cb06bbda77f0f8b3cde Signed-off-by: José Bollo --- include/afb/afb-binding-v1.h | 46 +++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'include/afb/afb-binding-v1.h') diff --git a/include/afb/afb-binding-v1.h b/include/afb/afb-binding-v1.h index 09edddb5..6c9b5c19 100644 --- a/include/afb/afb-binding-v1.h +++ b/include/afb/afb-binding-v1.h @@ -147,30 +147,51 @@ struct afb_binding_interface_v1 /* * Macros for logging messages */ -#if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO) -# if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS) -# define _AFB_LOGGING_V1_(itf,vlevel,llevel,...) \ +#if defined(AFB_BINDING_PRAGMA_NO_VERBOSE_DATA) + +# define _AFB_LOGGING_V1_(itf,vlevel,llevel,...) \ do{ \ - if(itf->verbosity>=vlevel) \ - afb_daemon_verbose2_v1(itf->daemon,llevel,__FILE__,__LINE__,__func__,__VA_ARGS__); \ + if(itf->verbosity>=vlevel) {\ + if (llevel <= AFB_VERBOSITY_LEVEL_ERROR) \ + afb_daemon_verbose2_v1(itf->daemon,llevel,__FILE__,__LINE__,__func__,__VA_ARGS__); \ + else \ + afb_daemon_verbose2_v1(itf->daemon,llevel,__FILE__,__LINE__,NULL,NULL); \ + } \ }while(0) -# define _AFB_REQ_LOGGING_V1_(itf,vlevel,llevel,req,...) \ +# define _AFB_REQ_LOGGING_V1_(itf,vlevel,llevel,req,...) \ do{ \ if(itf->verbosity>=vlevel) \ - afb_req_verbose(req,llevel,__FILE__,__LINE__,__func__,__VA_ARGS__); \ + afb_req_verbose(req,llevel,__FILE__,__LINE__,NULL,NULL); \ }while(0) -# else -# define _AFB_LOGGING_V1_(itf,vlevel,llevel,...) \ + +#elif defined(AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS) + +# define _AFB_LOGGING_V1_(itf,vlevel,llevel,...) \ do{ \ if(itf->verbosity>=vlevel) \ - afb_daemon_verbose_v1(itf->daemon,llevel,NULL,0,NULL,__VA_ARGS__); \ + afb_daemon_verbose2_v1(itf->daemon,llevel,NULL,0,NULL,__VA_ARGS__); \ }while(0) -# define _AFB_REQ_LOGGING_V1_(itf,vlevel,llevel,req,...) \ +# define _AFB_REQ_LOGGING_V1_(itf,vlevel,llevel,req,...) \ do{ \ if(itf->verbosity>=vlevel) \ afb_req_verbose(req,llevel,NULL,0,NULL,__VA_ARGS__); \ }while(0) -# endif + +#else + +# define _AFB_LOGGING_V1_(itf,vlevel,llevel,...) \ + do{ \ + if(itf->verbosity>=vlevel) \ + afb_daemon_verbose2_v1(itf->daemon,llevel,__FILE__,__LINE__,__func__,__VA_ARGS__); \ + }while(0) +# define _AFB_REQ_LOGGING_V1_(itf,vlevel,llevel,req,...) \ + do{ \ + if(itf->verbosity>=vlevel) \ + afb_req_verbose(req,llevel,__FILE__,__LINE__,__func__,__VA_ARGS__); \ + }while(0) + +#endif + # include "afb-verbosity.h" # define AFB_ERROR_V1(itf,...) _AFB_LOGGING_V1_(itf,AFB_VERBOSITY_LEVEL_ERROR,_AFB_SYSLOG_LEVEL_ERROR_,__VA_ARGS__) # define AFB_WARNING_V1(itf,...) _AFB_LOGGING_V1_(itf,AFB_VERBOSITY_LEVEL_WARNING,_AFB_SYSLOG_LEVEL_WARNING_,__VA_ARGS__) @@ -182,5 +203,4 @@ struct afb_binding_interface_v1 # define AFB_REQ_NOTICE_V1(itf,...) _AFB_REQ_LOGGING_V1_(itf,AFB_VERBOSITY_LEVEL_NOTICE,_AFB_SYSLOG_LEVEL_NOTICE_,__VA_ARGS__) # define AFB_REQ_INFO_V1(itf,...) _AFB_REQ_LOGGING_V1_(itf,AFB_VERBOSITY_LEVEL_INFO,_AFB_SYSLOG_LEVEL_INFO_,__VA_ARGS__) # define AFB_REQ_DEBUG_V1(itf,...) _AFB_REQ_LOGGING_V1_(itf,AFB_VERBOSITY_LEVEL_DEBUG,_AFB_SYSLOG_LEVEL_DEBUG_,__VA_ARGS__) -#endif -- cgit 1.2.3-korg