Browse Source

More cleaning of logging system

Pierre-Olivier Latour 11 years ago
parent
commit
582c6da74f
3 changed files with 35 additions and 15 deletions
  1. 12 0
      CGDWebServer/GCDWebServer.h
  2. 15 7
      CGDWebServer/GCDWebServer.m
  3. 8 8
      CGDWebServer/GCDWebServerPrivate.h

+ 12 - 0
CGDWebServer/GCDWebServer.h

@@ -30,6 +30,15 @@
 #import "GCDWebServerRequest.h"
 #import "GCDWebServerResponse.h"
 
+typedef NS_ENUM(int, GCDWebServerLogLevel) {
+  kGCDWebServerLogLevel_Debug = 0,  // Only available if "NDEBUG" is not defined when building
+  kGCDWebServerLogLevel_Verbose,
+  kGCDWebServerLogLevel_Info,
+  kGCDWebServerLogLevel_Warning,
+  kGCDWebServerLogLevel_Error,
+  kGCDWebServerLogLevel_Exception,
+};
+
 typedef GCDWebServerRequest* (^GCDWebServerMatchBlock)(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery);
 typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* request);
 
@@ -87,6 +96,9 @@ NSString* GCDWebServerGetPrimaryIPv4Address();  // Returns IPv4 address of prima
 @end
 
 @interface GCDWebServer (Logging)
+#ifndef __GCDWEBSERVER_LOGGING_HEADER__
++ (void)setLogLevel:(GCDWebServerLogLevel)level;  // Default level is DEBUG or INFO if "NDEBUG" is defined when building (it can also be set at runtime with the "logLevel" environment variable)
+#endif
 - (void)logVerbose:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
 - (void)logInfo:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
 - (void)logWarning:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);

+ 15 - 7
CGDWebServer/GCDWebServer.m

@@ -65,9 +65,9 @@
 
 #ifndef __GCDWEBSERVER_LOGGING_HEADER__
 #ifdef NDEBUG
-long GCDLogMinLevel = 2;  // INFO level and higher
+GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Info;
 #else
-long GCDLogMinLevel = 0;  // DEBUG level and higher
+GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Debug;
 #endif
 #endif
 
@@ -79,7 +79,7 @@ static BOOL _run;
 
 #ifndef __GCDWEBSERVER_LOGGING_HEADER__
 
-void GCDLogMessage(long level, NSString* format, ...) {
+void GCDLogMessage(GCDWebServerLogLevel level, NSString* format, ...) {
   static const char* levelNames[] = {"DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR", "EXCEPTION"};
   va_list arguments;
   va_start(arguments, format);
@@ -311,7 +311,7 @@ static void _SignalHandler(int signal) {
 + (void)load {
   const char* logLevel = getenv("logLevel");
   if (logLevel) {
-    GCDLogMinLevel = atoi(logLevel);
+    GCDLogLevel = atoi(logLevel);
   }
 }
 
@@ -376,7 +376,7 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
       LOG_ERROR(@"Bonjour error %i (domain %i)", (int)error->error, (int)error->domain);
     } else {
       GCDWebServer* server = (ARC_BRIDGE GCDWebServer*)info;
-      LOG_VERBOSE(@"%@ now reachable at %@", [server class], server.bonjourServerURL);
+      LOG_INFO(@"%@ now reachable at %@", [server class], server.bonjourServerURL);
     }
   }
 }
@@ -472,7 +472,7 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
         }
         
         dispatch_resume(_source);
-        LOG_VERBOSE(@"%@ started on port %i and reachable at %@", [self class], (int)_port, self.serverURL);
+        LOG_INFO(@"%@ started on port %i and reachable at %@", [self class], (int)_port, self.serverURL);
       } else {
         LOG_ERROR(@"Failed listening on socket (%i): %s", errno, strerror(errno));
         close(listeningSocket);
@@ -505,7 +505,7 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
     ARC_DISPATCH_RELEASE(_source);
     _source = NULL;
     
-    LOG_VERBOSE(@"%@ stopped", [self class]);
+    LOG_INFO(@"%@ stopped", [self class]);
   }
   _port = 0;
 }
@@ -745,6 +745,14 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
 
 @implementation GCDWebServer (Logging)
 
+#ifndef __GCDWEBSERVER_LOGGING_HEADER__
+
++ (void)setLogLevel:(GCDWebServerLogLevel)level {
+  GCDLogLevel = level;
+}
+
+#endif
+
 - (void)logVerbose:(NSString*)format, ... {
   va_list arguments;
   va_start(arguments, format);

+ 8 - 8
CGDWebServer/GCDWebServerPrivate.h

@@ -71,14 +71,14 @@
 
 #else
 
-extern long GCDLogMinLevel;
-extern void GCDLogMessage(long level, NSString* format, ...) NS_FORMAT_FUNCTION(2, 3);
+extern GCDWebServerLogLevel GCDLogLevel;
+extern void GCDLogMessage(GCDWebServerLogLevel level, NSString* format, ...) NS_FORMAT_FUNCTION(2, 3);
 
-#define LOG_VERBOSE(...) do { if (GCDLogMinLevel <= 1) GCDLogMessage(1, __VA_ARGS__); } while (0)
-#define LOG_INFO(...) do { if (GCDLogMinLevel <= 2) GCDLogMessage(2, __VA_ARGS__); } while (0)
-#define LOG_WARNING(...) do { if (GCDLogMinLevel <= 3) GCDLogMessage(3, __VA_ARGS__); } while (0)
-#define LOG_ERROR(...) do { if (GCDLogMinLevel <= 4) GCDLogMessage(4, __VA_ARGS__); } while (0)
-#define LOG_EXCEPTION(__EXCEPTION__) do { if (GCDLogMinLevel <= 5) GCDLogMessage(5, @"%@", __EXCEPTION__); } while (0)
+#define LOG_VERBOSE(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Verbose) GCDLogMessage(kGCDWebServerLogLevel_Verbose, __VA_ARGS__); } while (0)
+#define LOG_INFO(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Info) GCDLogMessage(kGCDWebServerLogLevel_Info, __VA_ARGS__); } while (0)
+#define LOG_WARNING(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Warning) GCDLogMessage(kGCDWebServerLogLevel_Warning, __VA_ARGS__); } while (0)
+#define LOG_ERROR(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Error) GCDLogMessage(kGCDWebServerLogLevel_Error, __VA_ARGS__); } while (0)
+#define LOG_EXCEPTION(__EXCEPTION__) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Exception) GCDLogMessage(kGCDWebServerLogLevel_Exception, @"%@", __EXCEPTION__); } while (0)
 
 #ifdef NDEBUG
 
@@ -95,7 +95,7 @@ extern void GCDLogMessage(long level, NSString* format, ...) NS_FORMAT_FUNCTION(
     } \
   } while (0)
 #define DNOT_REACHED() abort()
-#define LOG_DEBUG(...) do { if (GCDLogMinLevel <= 0) GCDLogMessage(0, __VA_ARGS__); } while (0)
+#define LOG_DEBUG(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Debug) GCDLogMessage(kGCDWebServerLogLevel_Debug, __VA_ARGS__); } while (0)
 
 #endif