AP05/debug_print/debug_print.c
2025-04-06 14:41:47 +08:00

85 lines
2.0 KiB
C

#include <stdio.h>
#include <unistd.h>
#include <stdarg.h>
#include <sys/time.h>
#include <time.h>
#include <string.h>
#include "debug_print.h"
//standard: iso-8601
void debug_get_time(char *buffer, int len)
{
struct timeval tv;
struct tm *result;
time_t timep;
suseconds_t millitm;
#if 1
gettimeofday(&tv, NULL);
timep = tv.tv_sec;
millitm = (tv.tv_usec + 500) / 1000;
if (millitm == 1000) {
++timep;
millitm = 0;
}
#endif
//time(&timep);
result = localtime(&timep);
if (result != NULL) {
if(buffer) {
//snprintf(buffer, len, "%d-%02d-%02d %02d:%02d:%02d.%03d",
// result->tm_year + 1900, result->tm_mon + 1, result->tm_mday,
// result->tm_hour, result->tm_min, result->tm_sec, (int)millitm);
snprintf(buffer, len, "%02d-%02d %02d:%02d:%02d.%03d",
result->tm_mon + 1, result->tm_mday,
result->tm_hour, result->tm_min, result->tm_sec, (int)millitm);
}
}
}
void getDayStr(char *buffer,int len){
time_t timep;
struct tm *p;
time (&timep);
p=localtime(&timep);
strftime (buffer,len,"%Y-%m-%d",p);
}
#if 1
/*
* demo:
* #define PRINT_FUNC debug_print
*/
int debug_print(const char *__restrict format, ...)
{
va_list valist;
char buffer[512] = "";
int ret;
va_start(valist, format);
ret = vsnprintf(buffer, sizeof(buffer), format, valist);
va_end(valist);
printf("%s", buffer);
char opTime[16]={0};
char logFileName[32]={0};
getDayStr(opTime,16);
sprintf(logFileName,"Log.%s",opTime);
buffer_to_file(logFileName,buffer,strlen(buffer),"a");
return ret;
}
#endif
int buffer_to_file(const char *pathname, const char *data, unsigned int size,const char *mod){
FILE *fp = NULL;
int temp = 0;
//LOG_I("path:%s,data:%s,size:%d\n",pathname,data,size);
fp = fopen(pathname, mod);
if(fp==NULL){
//LOG_I("open %s error\n", pathname);
temp = -1;
}else{
fwrite(data, 1, size, fp);
fclose(fp);
}
return temp;
}