C语言日志打印demo
/***********************************************************
* 日志信息
************************************************************/
#define LOG_ERROR(info, args...) \
do { \
FILE *_log_fp = fopen("/home/log.txt", "a+"); \
if (_log_fp) { \
time_t t; \
time(&t); \
struct tm *lt = localtime(&t); \
fprintf(_log_fp, "%02d-%02d-%02d %02d:%02d:%02d ", \
lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, \
lt->tm_hour, lt->tm_min, lt->tm_sec); \
fprintf(_log_fp, info, ##args); \
fprintf(_log_fp, "\t[%s:%d]\n", __FILE__, __LINE__); \
fclose(_log_fp); \
} \
} while(0)
#define PRINT_HEX(lable, buf, len) \
do \
{ \
if (buf) \
{ \
int xix; \
printf("%s,%s,[%d bytes]:\n", __FUNCTION__, lable, len); \
for (xix = 0; xix < len; xix++) \
printf("0x%02x%s", (buf)[xix], (xix % 16 == 15) ? "\n" : ","); \
printf("\n"); \
} \
} while (0);
// for test
int print_hex(const char *tag, void *d, int dlen)
{
int i = 0;
printf("unsigned char %s[%d] = {\n", tag?tag:"C", dlen);
for (i=0; i<dlen; i++) {
if (i%16==0)
printf("\t");
printf("0x%02X", ((unsigned char *)d)[i]);
if (i != dlen -1)
printf(", ");
if (i && (i+1)%16 == 0)
printf("\n");
}
printf("};\n");
return 0;
}
void print_data(char *info, unsigned char *data, unsigned int len)
{
int i = 0;
if (info) printf("%s\n", info);
for (i = 0; i < len; i++) {
if (i && i % 16 == 0) printf("\n");
printf("0x%02x ", data[i]);
}
printf("\n");
}