]> granicus.if.org Git - pdns/commitdiff
dnsdist: add a --disable-syslog option
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 15 Mar 2016 10:52:46 +0000 (11:52 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 15 Mar 2016 12:11:03 +0000 (13:11 +0100)
This prevents double logging in e.g. systemd

docs/manpages/dnsdist.1.md
pdns/dnsdist.cc
pdns/dolog.hh
pdns/test-dnscrypt_cc.cc
pdns/test-dnsdist_cc.cc

index fc289ec75561f61beba7ae8fb5117e569b6ab750..5dbab8e6677dbdd3dc0543f4d673b55d1d3e7a49 100644 (file)
@@ -81,6 +81,10 @@ Server for example is often mentioned.
 :    Run in foreground, but do not spawn a console. Use this switch to run
      dnsdist inside a supervisor (use with e.g. systemd and daemontools).
 
+--disable-syslog
+:    Disable logging to syslog. Use this when running inside a supervisor that
+     handles logging (like systemd). Do not use in combination with **--daemon**.
+
 -p,--pidfile *FILE*
 :    Write a pidfile to *FILE*, works only with **--daemon**.
 
index 0fce07e9b37edc5852ebf6c4b7b6c9380305fe84..d08b0990b748e334705388089b4ffba9371ed1b7 100644 (file)
@@ -63,6 +63,7 @@ uint16_t g_maxOutstanding{10240};
 bool g_console;
 bool g_verboseHealthChecks{false};
 uint32_t g_staleCacheEntriesTTL{0};
+bool g_syslog{true};
 
 GlobalStateHolder<NetmaskGroup> g_ACL;
 string g_outputBuffer;
@@ -1257,6 +1258,7 @@ try
     {"daemon", 0, 0, 'd'},
     {"pidfile",  required_argument, 0, 'p'},
     {"supervised", 0, 0, 's'},
+    {"disable-syslog", 0, 0, 2},
     {"uid",  required_argument, 0, 'u'},
     {"verbose", 0, 0, 'v'},
     {"version", 0, 0, 'V'},
@@ -1277,6 +1279,9 @@ try
     case 1:
       g_cmdLine.checkConfig=true;
       break;
+    case 2:
+      g_syslog=false;
+      break;
     case 'C':
       g_cmdLine.config=optarg;
       break;
@@ -1316,6 +1321,8 @@ try
       cout<<"-l,--local address    Listen on this local address\n";
       cout<<"--supervised          Don't open a console, I'm supervised\n";
       cout<<"                        (use with e.g. systemd and daemontools)\n";
+      cout<<"--disable-syslog      Don't log to syslog, only to stdout\n";
+      cout<<"                        (use with e.g. systemd)\n";
       cout<<"-p,--pidfile file     Write a pidfile, works only with --daemon\n";
       cout<<"-u,--uid uid          Change the process user ID after binding sockets\n";
       cout<<"-v,--verbose          Enable verbose mode\n";
index eb988232edf6a352e91ca6c009cc0ff81ae074ff..77c42bcd180f6c55f50b2134d8f8c645c7032c02 100644 (file)
@@ -48,13 +48,15 @@ void dolog(std::ostream& os, const char* s, T value, Args... args)
 
 extern bool g_console;
 extern bool g_verbose;
+extern bool g_syslog;
 
 template<typename... Args>
 void genlog(int level, const char* s, Args... args)
 {
   std::ostringstream str;
   dolog(str, s, args...);
-  syslog(level, "%s", str.str().c_str());
+  if(g_syslog)
+    syslog(level, "%s", str.str().c_str());
   if(g_console) 
     std::cout<<str.str()<<std::endl;
 }
index 8c1e8e2baf80a66807fb4d98bfc3b74d0506f832..804727934f6714ca5a61cdb2ee6988f1d515c0e1 100644 (file)
@@ -34,6 +34,7 @@
 
 bool g_verbose{true};
 bool g_console{true};
+bool g_syslog{true};
 
 BOOST_AUTO_TEST_SUITE(dnscrypt_cc)
 
index d2bba08e8728881e363b61a5e03b3b5f5a2bbf5d..5e470f9aa4d90272ce57ce9d08d757c33d580378 100644 (file)
@@ -39,6 +39,7 @@
 BOOST_AUTO_TEST_SUITE(dnsdist_cc)
 
 bool g_console{true};
+bool g_syslog{true};
 bool g_verbose{true};
 
 static void validateQuery(const char * packet, size_t packetSize)