- time_t now = time(NULL);
- for (size_t i = 0; i < writes.size(); ++i) {
- fprintf(logfp, "%llu %s %s %d %llu %llu %llu\n",
- (long long unsigned)(writes[i].connect_time),
- writes[i].remote_addr.c_str(),
- writes[i].url.c_str(),
- int(now - writes[i].connect_time),
- (long long unsigned)(writes[i].bytes_sent),
- (long long unsigned)(writes[i].bytes_lost),
- (long long unsigned)(writes[i].num_loss_events));
+ timespec now;
+ if (clock_gettime(CLOCK_MONOTONIC_COARSE, &now) == -1) {
+ log_perror("clock_gettime(CLOCK_MONOTONIC_COARSE)");
+ } else {
+ for (size_t i = 0; i < writes.size(); ++i) {
+ fprintf(logfp, "%llu %s %s %d %llu %llu %llu \"%s\" \"%s\"\n",
+ (long long unsigned)(writes[i].connect_time.tv_sec),
+ writes[i].remote_addr.c_str(),
+ writes[i].url.c_str(),
+ int(now.tv_sec - writes[i].connect_time.tv_sec), // Rather coarse.
+ (long long unsigned)(writes[i].bytes_sent),
+ (long long unsigned)(writes[i].bytes_lost),
+ (long long unsigned)(writes[i].num_loss_events),
+ writes[i].referer.c_str(),
+ writes[i].user_agent.c_str());
+ }
+ fflush(logfp);