X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=accesslog.cpp;h=af53872e6ec03c0d68f83b86e4b9c9f83320eb6d;hp=44146504d050395e979826cde015eb7bd4b4b5bf;hb=b1b81d8f5492e48a60f0ed2930a098747928e5c4;hpb=b57530552825a13a3cd1924bda99e5e237c722a4 diff --git a/accesslog.cpp b/accesslog.cpp index 4414650..af53872 100644 --- a/accesslog.cpp +++ b/accesslog.cpp @@ -8,6 +8,7 @@ #include "client.h" #include "log.h" #include "mutexlock.h" +#include "timespec.h" using namespace std; @@ -53,19 +54,27 @@ void AccessLogThread::do_work() if (logfp != NULL) { // Do the actual writes. - timespec now; - if (clock_gettime(CLOCK_MONOTONIC_COARSE, &now) == -1) { + timespec now_monotonic; + timespec now_realtime; + if (clock_gettime(CLOCK_MONOTONIC_COARSE, &now_monotonic) == -1) { log_perror("clock_gettime(CLOCK_MONOTONIC_COARSE)"); + } else if (clock_gettime(CLOCK_REALTIME, &now_realtime) == -1) { + log_perror("clock_gettime(CLOCK_REALTIME)"); } else { + timespec realtime_offset = clock_diff(now_monotonic, now_realtime); 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.tv_sec), + timespec connect_time_realtime = clock_add(writes[i].connect_time, realtime_offset); + timespec time_since_connect = clock_diff(writes[i].connect_time, now_monotonic); + fprintf(logfp, "%llu %s %s %d %llu %llu %llu \"%s\" \"%s\"\n", + (long long unsigned)(connect_time_realtime.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. + int(time_since_connect.tv_sec), (long long unsigned)(writes[i].bytes_sent), (long long unsigned)(writes[i].bytes_lost), - (long long unsigned)(writes[i].num_loss_events)); + (long long unsigned)(writes[i].num_loss_events), + writes[i].referer.c_str(), + writes[i].user_agent.c_str()); } fflush(logfp); }