EGong

git clone git://xatko.vsos.ethz.ch/EGong.git
Log | Files | Refs

Log.h (1721B)


      1 #pragma once
      2 #define WIDEN2(x) # x
      3 #define WIDEN(x) WIDEN2(x)
      4 
      5 #define LOG_COMPOSE_SRC (const struct log_source){.file={.v=__FILE__, .l=sizeof(__FILE__)}, .line={.v=WIDEN(__LINE__), .l=sizeof(WIDEN(__LINE__))}, .func={.v=__func__, .l=sizeof(__func__)}}
      6 
      7 #include <string.h>
      8 #include <EGong/Util/Config.h>
      9 struct log_source_string{
     10 	const char *v;
     11 	unsigned int l;
     12 };
     13 struct log_source{
     14 	struct log_source_string file;
     15 	struct log_source_string line;
     16 	struct log_source_string func;
     17 };
     18 enum LOG_LEVELS{
     19 	LOG_LEVEL_DEBUG,
     20 	LOG_LEVEL_INFO, 
     21 	LOG_LEVEL_WARNING,
     22 	LOG_LEVEL_ERROR,
     23 	LOG_LEVEL_FATAL,
     24 	LOG_LEVEL_COUNT
     25 };
     26 enum LOG_DESTINATIONS{
     27 	LOG_DEST_STDIO=(1<<0),
     28 	LOG_DEST_FILE=(1<<1),
     29 	LOG_DEST_GTK=(1<<2)
     30 };
     31 enum LOG_TYPES{
     32 	LOG_TYPE_NORMAL,
     33 	LOG_TYPE_RESULT,
     34 	LOG_TYPE_RAW,
     35 	LOG_TYPE_SIGNAL
     36 	#ifdef _WIN32
     37 		,LOG_TYPE_SOCKET
     38 	#endif
     39 };
     40 #ifndef _WIN32
     41 	#define LOG_TYPE_SOCKET LOG_TYPE_SIGNAL
     42 #endif
     43 struct log_level{
     44 	const char *name;
     45 	char color[10];
     46 };
     47 
     48 
     49 extern void do_log_call(const struct log_source src, const char *msg, unsigned int msglength, unsigned int type, unsigned int level, unsigned int destmask);
     50 extern void do_log_call_composite(const struct log_source src, unsigned int type, unsigned int level, unsigned int destmask, ...);
     51 extern struct log_level log_levels[LOG_LEVEL_COUNT];
     52 
     53 #define do_log(MSG, TYPE, LEVEL) do_log_call(LOG_COMPOSE_SRC,MSG,sizeof(MSG),TYPE,LEVEL,EGong_global_configuration.log.destinations)
     54 #define do_log_comp(TYPE, LEVEL, MSGS) do_log_call_composite(LOG_COMPOSE_SRC,TYPE,LEVEL,EGong_global_configuration.log.destinations, #MSGS, NULL)
     55 #define do_log_dynamic(MSG, TYPE, LEVEL) do_log_call(LOG_COMPOSE_SRC,MSG,strlen(MSG),TYPE,LEVEL,EGong_global_configuration.log.destinations)