1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include <stdarg.h> #include <stdio.h> #include <sys/time.h> #include <time.h> #include <sys/socket.h>
using namespace std;
void foo(int id, const char *fmt, ...) { constexpr int MAXLEN = 1024; char buf[MAXLEN]; int n;
n = snprintf(buf, MAXLEN, "INFO(%d): ", id);
va_list ap; va_start(ap, fmt); n += vsnprintf(buf + n, MAXLEN - n, fmt, ap); va_end(ap);
struct timeval tv; gettimeofday(&tv, NULL); struct tm tm; localtime_r(&tv.tv_sec, &tm); char timebuf[64]; snprintf(timebuf, MAXLEN - n, "%d-%02d-%02d %d:%d:%d.%ld %s", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec, tm.tm_zone);
printf(buf, timebuf); }
int main() { const char* name = "Tony"; foo(123, "Hello %s at %%s\n", name);
return 0; }
|