From 702d2355ff2d6468ec8452a4792a21bce6c4b68c Mon Sep 17 00:00:00 2001 From: Evan Klitzke Date: Tue, 15 May 2012 00:28:38 -0700 Subject: [PATCH] add elapsed microseconds to the access log --- src/request.cc | 5 ++++- src/request.h | 4 ++-- src/server.cc | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/request.cc b/src/request.cc index 0134859..63f64ab 100644 --- a/src/request.cc +++ b/src/request.cc @@ -2,7 +2,10 @@ #include "./request.h" +#include + namespace garfield { -Request::Request() { +Request::Request() + :connection_time_(boost::posix_time::microsec_clock::universal_time()) { } } diff --git a/src/request.h b/src/request.h index 32d1138..629736f 100644 --- a/src/request.h +++ b/src/request.h @@ -25,7 +25,7 @@ class Request { std::string peername; // Get the connection time. - const boost::posix_time::microsec_clock& connection_time() const { + const boost::posix_time::ptime& connection_time() const { return connection_time_; } @@ -34,7 +34,7 @@ class Request { boost::asio::streambuf streambuf; private: - boost::posix_time::microsec_clock connection_time_; + boost::posix_time::ptime connection_time_; HeadersDict headers_; }; } diff --git a/src/server.cc b/src/server.cc index f5bf629..c4503e0 100644 --- a/src/server.cc +++ b/src/server.cc @@ -116,12 +116,14 @@ void HTTPServer::OnRequest(Connection *conn, Request *req, RequestError err) { std::placeholders::_1, std::placeholders::_2)); + boost::posix_time::time_duration td = ( + boost::posix_time::microsec_clock::universal_time()- req->connection_time()); boost::local_time::local_time_facet *facet( new boost::local_time::local_time_facet("%Y-%m-%d %H:%M:%S.%f")); std::stringstream date_stream; date_stream.imbue(std::locale(date_stream.getloc(), facet)); date_stream << boost::local_time::local_microsec_clock::local_time(boost::local_time::time_zone_ptr()); - Log(ACCESS, "%s [%s] \"%s %s HTTP/1.%d\" %d %zd \"%s\" \"%s\"", + Log(ACCESS, "%s [%s] \"%s %s HTTP/1.%d\" %d %zd %ld \"%s\" \"%s\"", req->peername.c_str(), date_stream.str().c_str(), req->method.c_str(), @@ -129,6 +131,7 @@ void HTTPServer::OnRequest(Connection *conn, Request *req, RequestError err) { req->version.second, resp->status(), expected_size, + td.total_microseconds(), FmtLogField(req->headers()->GetHeader("Referer")), FmtLogField(req->headers()->GetHeader("User-Agent"))); }