컴퓨터활용/유닉스
로그파일 쓰기 C, macro 예제
멜번초이
2005. 10. 25. 23:58
파일에 로그 쓰기 예제
#define FCL_PRINT_LOG(_msg1,_msg2) do { \
char _str[200]; \
char _dt[16+1]; \
char _date[8+1]; \
char _fname[60]; \
\
bzero(_str, 200 ); \
bzero(_dt, 17 ); \
bzero(_date, 9 ); \
bzero(_fname,60 ); \
\
mpfm_get_date_time(_str); \
strncpy( _date, _str, 8); \
if( !strncmp("TestAutoSystem", PFM_TRAN->svc_nm, 14) ) { \
sprintf( _fname, "/nbslog/fap/bat/autotest.log.%s", _date ); \
} else { \
sprintf( _fname, "/nbslog/fap/bat/access.log.%s", _date ); \
} \
\
memcpy(_dt, _str, 8); \
memcpy(_dt+8, ":", 1); \
memcpy(_dt+9, _str+8, 6); \
\
sprintf(_str, "%s|%s|%s|%s|%s\n", _dt, __FILE__,PFM_TRAN->svc_nm,_msg1, _msg2); \
\
FILE *_fp; \
if((_fp = fopen(_fname, "ab" ))!= NULL) { \
fwrite(_str, strlen(_str), 1, _fp); \
fclose(_fp); \
} \
sprintf( _str, "chmod 777 %s 2>/dev/null", _fname ); \
system(_str); \
} while(0)
#define FCL_PRINT_LOG(_msg1,_msg2) do { \
char _str[200]; \
char _dt[16+1]; \
char _date[8+1]; \
char _fname[60]; \
\
bzero(_str, 200 ); \
bzero(_dt, 17 ); \
bzero(_date, 9 ); \
bzero(_fname,60 ); \
\
mpfm_get_date_time(_str); \
strncpy( _date, _str, 8); \
if( !strncmp("TestAutoSystem", PFM_TRAN->svc_nm, 14) ) { \
sprintf( _fname, "/nbslog/fap/bat/autotest.log.%s", _date ); \
} else { \
sprintf( _fname, "/nbslog/fap/bat/access.log.%s", _date ); \
} \
\
memcpy(_dt, _str, 8); \
memcpy(_dt+8, ":", 1); \
memcpy(_dt+9, _str+8, 6); \
\
sprintf(_str, "%s|%s|%s|%s|%s\n", _dt, __FILE__,PFM_TRAN->svc_nm,_msg1, _msg2); \
\
FILE *_fp; \
if((_fp = fopen(_fname, "ab" ))!= NULL) { \
fwrite(_str, strlen(_str), 1, _fp); \
fclose(_fp); \
} \
sprintf( _str, "chmod 777 %s 2>/dev/null", _fname ); \
system(_str); \
} while(0)