2011年4月11日 星期一

需要debug message時才秀

disable comment out
$ grep -rl "define DEBUG_ENV" | xargs sed -i 's/\/\/#define\ DEBUG_ENV/#define\ DEBUG_ENV/g'
comment out
$ grep -rl "define DEBUG_ENV" | xargs sed -i 's/#define\ DEBUG_ENV/\/\/#define\ DEBUG_ENV/g'
#define DEBUG_ENV

#ifdef DEBUG_ENV
#define fprintfs(fmt,args...) fprintf(stdout, fmt ,##args)
#define fprintfe(fmt,args...) fprintf(stderr, fmt ,##args)
#define DEBUGMSG __FILE__, __LINE__, __FUNCTION__
#else
#define fprintfs(fmt,args...)
#define fprintfe(fmt,args...)
#endif


#define CHECK_RET_VAL(code) \
    if(code < 0)\
        {fprintf(stderr, "%s %d %d\n",__FUNCTION__,__LINE__,code);return code;}


#define DEBUG_ENV
#ifdef DEBUG_ENV
#define printff(fmt,args...) printf(fmt ,##args)
#define DEBUGMSG __FILE__, __LINE__, __FUNCTION__
#else
#define printff(fmt,args...)
#endif

void log(char *level, char *msg)
  {
      FILE *fp= fopen("log.txt", "ab");
      time_t t;
      struct tm *t_tm;
      char date[128];
  
      time(&t);
      t_tm=gmtime(&t);
      strftime(date, sizeof(date), "%Y%m%d_%H:%M:%S", t_tm);
      printf("%s\n",date);
  
      if( NULL == fp ) 
      {    
          fprintf(stderr, "can't open log file\n" );
          return;
      }    
  
      fprintf (fp,  "%s: %s T:%s\n", level, msg, date);
      fclose(fp);
      return;
  }

int main (void) 
{ 
    printff ("%s[%d] offset = %s\n", DEBUGMSG);
    log("Error", "I don't like it"); 
    return 0; 
}

結果:
t1.c[19] offset = main
 
其中,
__FILE__ :檔案名稱
__LINE__ :行數
__TIME__ : 11:11:11 
__TIMESTAMP__ : Fri Nov 11 11:11:11 2011  

沒有留言:

張貼留言