Browse Source

Make GnuTLS log level dependent on the aria2 ones

Closes GH-180
Nils Maier 11 years ago
parent
commit
3194174d4b
3 changed files with 27 additions and 1 deletions
  1. 24 0
      src/LogFactory.cc
  2. 2 0
      src/LogFactory.h
  3. 1 1
      src/Platform.cc

+ 24 - 0
src/LogFactory.cc

@@ -37,6 +37,10 @@
 #include "prefs.h"
 #include "RecoverableException.h"
 
+#ifdef HAVE_LIBGNUTLS
+# include <gnutls/gnutls.h>
+#endif // HAVE_LIBGNUTLS
+
 namespace aria2 {
 
 std::string LogFactory::filename_ = DEV_NULL;
@@ -57,6 +61,21 @@ void LogFactory::openLogger(const std::shared_ptr<Logger>& logger)
   logger->setConsoleOutput(consoleOutput_);
 }
 
+void LogFactory::adjustDependentLevels() {
+  auto level = consoleLogLevel_;
+  if (filename_ != DEV_NULL) {
+    level = std::min(level, logLevel_);
+  }
+#ifdef HAVE_LIBGNUTLS
+  if (level == Logger::A2_DEBUG) {
+    gnutls_global_set_log_level(10);
+  }
+  else {
+    gnutls_global_set_log_level(0);
+  }
+#endif
+}
+
 void LogFactory::reconfigure()
 {
   if(logger_) {
@@ -89,6 +108,7 @@ void LogFactory::setLogFile(const std::string& name)
   } else {
     filename_ = name;
   }
+  adjustDependentLevels();
 }
 
 namespace {
@@ -113,21 +133,25 @@ Logger::LEVEL toLogLevel(const std::string& level)
 void LogFactory::setLogLevel(Logger::LEVEL level)
 {
   logLevel_ = level;
+  adjustDependentLevels();
 }
 
 void LogFactory::setLogLevel(const std::string& level)
 {
   logLevel_ = toLogLevel(level);
+  adjustDependentLevels();
 }
 
 void LogFactory::setConsoleLogLevel(Logger::LEVEL level)
 {
   consoleLogLevel_ = level;
+  adjustDependentLevels();
 }
 
 void LogFactory::setConsoleLogLevel(const std::string& level)
 {
   consoleLogLevel_ = toLogLevel(level);
+  adjustDependentLevels();
 }
 
 void LogFactory::release() {

+ 2 - 0
src/LogFactory.h

@@ -54,6 +54,8 @@ private:
 
   static void openLogger(const std::shared_ptr<Logger>& logger);
 
+  static void adjustDependentLevels();
+
   LogFactory();
 public:
   /**

+ 1 - 1
src/Platform.cc

@@ -132,7 +132,7 @@ bool Platform::setUp()
     }
 
     gnutls_global_set_log_function(gnutls_log_callback);
-    gnutls_global_set_log_level(10);
+    gnutls_global_set_log_level(0);
   }
 #endif // HAVE_LIBGNUTLS