]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
webserver: document the setting and set lvl to NOTICE
authorPieter Lexis <pieter.lexis@powerdns.com>
Mon, 21 Jan 2019 17:31:48 +0000 (18:31 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 21 Jan 2019 17:31:48 +0000 (18:31 +0100)
docs/settings.rst
pdns/webserver.cc

index 3910bc30450fa932f4c3b65a623fcf6d57a68ba3..e4a1b6e2bcbb796e2f71c10542a8b7602275680e 100644 (file)
@@ -1601,6 +1601,47 @@ IP Address for webserver/API to listen on.
 
 Webserver/API access is only allowed from these subnets.
 
+.. _setting-webserver-loglevel:
+
+``webserver-loglevel``
+----------------------
+.. versionadded:: 4.2.0
+
+-  String, one of "none", "normal", "detailed"
+
+The amount of logging the webserver must do. "none" means no useful webserver information will be logged.
+When set to "normal", the webserver will log a line per request that should be familiar::
+
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e> 127.0.0.1:55376 "GET /api/v1/servers/localhost/bla HTTP/1.1" 404 196
+
+When set to "detailed", all information about the request and response are logged::
+
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e> Request Details:
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>  Headers:
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   accept-encoding: gzip, deflate
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   accept-language: en-US,en;q=0.5
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   connection: keep-alive
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   dnt: 1
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   host: 127.0.0.1:8081
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   upgrade-insecure-requests: 1
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>  No body
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e> Response details:
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>  Headers:
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   Connection: close
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   Content-Length: 49
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   Content-Type: text/html; charset=utf-8
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   Server: PowerDNS/0.0.15896.0.gaba8bab3ab
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>  Full body: 
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e>   <!html><title>Not Found</title><h1>Not Found</h1>
+  [webserver] <e235780e-a5cf-415e-9326-9d33383e739e> 127.0.0.1:55376 "GET /api/v1/servers/localhost/bla HTTP/1.1" 404 196
+
+The value between the hooks is a UUID that is generated for each request. This can be used to find all lines related to a single request.
+
+.. note::
+  The webserver logs these line on the NOTICE level. The :ref:`settings-loglevel` seting must be 5 or higher for these lines to end up in the log.
+
 .. _setting-webserver-password:
 
 ``webserver-password``
index e83666fd4b758b97a2defe48652f12f7bdb8331c..2b813cfc04b1e12cbc24cb5c9bd46193d8427a0c 100644 (file)
@@ -315,40 +315,40 @@ void WebServer::serveConnection(std::shared_ptr<Socket> client) const {
     }
 
     if (d_loglevel >= WebServer::LogLevel::Detailed) {
-      g_log<<Logger::Info<<logprefix<<"Request Details:"<<endl;
+      g_log<<Logger::Notice<<logprefix<<"Request Details:"<<endl;
 
       bool first = true;
       for (const auto& r : req.getvars) {
         if (first) {
           first = false;
-          g_log<<Logger::Info<<logprefix<<" GET params:"<<endl;
+          g_log<<Logger::Notice<<logprefix<<" GET params:"<<endl;
         }
-        g_log<<Logger::Info<<logprefix<<"  "<<r.first<<": "<<r.second<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<r.first<<": "<<r.second<<endl;
       }
 
       first = true;
       for (const auto& r : req.postvars) {
         if (first) {
           first = false;
-          g_log<<Logger::Info<<logprefix<<" POST params:"<<endl;
+          g_log<<Logger::Notice<<logprefix<<" POST params:"<<endl;
         }
-        g_log<<Logger::Info<<logprefix<<"  "<<r.first<<": "<<r.second<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<r.first<<": "<<r.second<<endl;
       }
       first = true;
 
       for (const auto& h : req.headers) {
         if (first) {
           first = false;
-          g_log<<Logger::Info<<logprefix<<" Headers:"<<endl;
+          g_log<<Logger::Notice<<logprefix<<" Headers:"<<endl;
         }
-        g_log<<Logger::Info<<logprefix<<"  "<<h.first<<": "<<h.second<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<h.first<<": "<<h.second<<endl;
       }
 
       if (req.body.empty()) {
-        g_log<<Logger::Info<<logprefix<<" No body"<<endl;
+        g_log<<Logger::Notice<<logprefix<<" No body"<<endl;
       } else {
-        g_log<<Logger::Info<<logprefix<<" Full body: "<<endl;
-        g_log<<Logger::Info<<logprefix<<"  "<<req.body<<endl;
+        g_log<<Logger::Notice<<logprefix<<" Full body: "<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<req.body<<endl;
       }
     }
 
@@ -358,20 +358,20 @@ void WebServer::serveConnection(std::shared_ptr<Socket> client) const {
     reply = ss.str();
 
     if (d_loglevel >= WebServer::LogLevel::Detailed) {
-      g_log<<Logger::Info<<logprefix<<"Response details:"<<endl;
+      g_log<<Logger::Notice<<logprefix<<"Response details:"<<endl;
       bool first = true;
       for (const auto& h : resp.headers) {
         if (first) {
           first = false;
-          g_log<<Logger::Info<<logprefix<<" Headers:"<<endl;
+          g_log<<Logger::Notice<<logprefix<<" Headers:"<<endl;
         }
-        g_log<<Logger::Info<<logprefix<<"  "<<h.first<<": "<<h.second<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<h.first<<": "<<h.second<<endl;
       }
       if (resp.body.empty()) {
-        g_log<<Logger::Info<<logprefix<<" No body"<<endl;
+        g_log<<Logger::Notice<<logprefix<<" No body"<<endl;
       } else {
-        g_log<<Logger::Info<<logprefix<<" Full body: "<<endl;
-        g_log<<Logger::Info<<logprefix<<"  "<<resp.body<<endl;
+        g_log<<Logger::Notice<<logprefix<<" Full body: "<<endl;
+        g_log<<Logger::Notice<<logprefix<<"  "<<resp.body<<endl;
       }
     }
 
@@ -389,7 +389,7 @@ void WebServer::serveConnection(std::shared_ptr<Socket> client) const {
   }
 
   if (d_loglevel >= WebServer::LogLevel::Normal) {
-    g_log<<Logger::Info<<logprefix<<remote<<" \""<<req.method<<" "<<req.url.path<<" HTTP/"<<req.versionStr(req.version)<<"\" "<<resp.status<<" "<<reply.size()<<endl;
+    g_log<<Logger::Notice<<logprefix<<remote<<" \""<<req.method<<" "<<req.url.path<<" HTTP/"<<req.versionStr(req.version)<<"\" "<<resp.status<<" "<<reply.size()<<endl;
   }
 }