More cleaning of logging system

This commit is contained in:
Pierre-Olivier Latour
2014-04-10 14:27:07 -07:00
parent 1e1fd24b5d
commit 582c6da74f
3 changed files with 35 additions and 15 deletions
+12
View File
@@ -30,6 +30,15 @@
#import "GCDWebServerRequest.h" #import "GCDWebServerRequest.h"
#import "GCDWebServerResponse.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 GCDWebServerRequest* (^GCDWebServerMatchBlock)(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery);
typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* request); typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* request);
@@ -87,6 +96,9 @@ NSString* GCDWebServerGetPrimaryIPv4Address(); // Returns IPv4 address of prima
@end @end
@interface GCDWebServer (Logging) @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)logVerbose:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
- (void)logInfo:(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); - (void)logWarning:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+15 -7
View File
@@ -65,9 +65,9 @@
#ifndef __GCDWEBSERVER_LOGGING_HEADER__ #ifndef __GCDWEBSERVER_LOGGING_HEADER__
#ifdef NDEBUG #ifdef NDEBUG
long GCDLogMinLevel = 2; // INFO level and higher GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Info;
#else #else
long GCDLogMinLevel = 0; // DEBUG level and higher GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Debug;
#endif #endif
#endif #endif
@@ -79,7 +79,7 @@ static BOOL _run;
#ifndef __GCDWEBSERVER_LOGGING_HEADER__ #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"}; static const char* levelNames[] = {"DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR", "EXCEPTION"};
va_list arguments; va_list arguments;
va_start(arguments, format); va_start(arguments, format);
@@ -311,7 +311,7 @@ static void _SignalHandler(int signal) {
+ (void)load { + (void)load {
const char* logLevel = getenv("logLevel"); const char* logLevel = getenv("logLevel");
if (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); LOG_ERROR(@"Bonjour error %i (domain %i)", (int)error->error, (int)error->domain);
} else { } else {
GCDWebServer* server = (ARC_BRIDGE GCDWebServer*)info; 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); 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 { } else {
LOG_ERROR(@"Failed listening on socket (%i): %s", errno, strerror(errno)); LOG_ERROR(@"Failed listening on socket (%i): %s", errno, strerror(errno));
close(listeningSocket); close(listeningSocket);
@@ -505,7 +505,7 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
ARC_DISPATCH_RELEASE(_source); ARC_DISPATCH_RELEASE(_source);
_source = NULL; _source = NULL;
LOG_VERBOSE(@"%@ stopped", [self class]); LOG_INFO(@"%@ stopped", [self class]);
} }
_port = 0; _port = 0;
} }
@@ -745,6 +745,14 @@ static void _NetServiceClientCallBack(CFNetServiceRef service, CFStreamError* er
@implementation GCDWebServer (Logging) @implementation GCDWebServer (Logging)
#ifndef __GCDWEBSERVER_LOGGING_HEADER__
+ (void)setLogLevel:(GCDWebServerLogLevel)level {
GCDLogLevel = level;
}
#endif
- (void)logVerbose:(NSString*)format, ... { - (void)logVerbose:(NSString*)format, ... {
va_list arguments; va_list arguments;
va_start(arguments, format); va_start(arguments, format);
+8 -8
View File
@@ -71,14 +71,14 @@
#else #else
extern long GCDLogMinLevel; extern GCDWebServerLogLevel GCDLogLevel;
extern void GCDLogMessage(long level, NSString* format, ...) NS_FORMAT_FUNCTION(2, 3); 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_VERBOSE(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Verbose) GCDLogMessage(kGCDWebServerLogLevel_Verbose, __VA_ARGS__); } while (0)
#define LOG_INFO(...) do { if (GCDLogMinLevel <= 2) GCDLogMessage(2, __VA_ARGS__); } while (0) #define LOG_INFO(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Info) GCDLogMessage(kGCDWebServerLogLevel_Info, __VA_ARGS__); } while (0)
#define LOG_WARNING(...) do { if (GCDLogMinLevel <= 3) GCDLogMessage(3, __VA_ARGS__); } while (0) #define LOG_WARNING(...) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Warning) GCDLogMessage(kGCDWebServerLogLevel_Warning, __VA_ARGS__); } while (0)
#define LOG_ERROR(...) do { if (GCDLogMinLevel <= 4) GCDLogMessage(4, __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 (GCDLogMinLevel <= 5) GCDLogMessage(5, @"%@", __EXCEPTION__); } while (0) #define LOG_EXCEPTION(__EXCEPTION__) do { if (GCDLogLevel <= kGCDWebServerLogLevel_Exception) GCDLogMessage(kGCDWebServerLogLevel_Exception, @"%@", __EXCEPTION__); } while (0)
#ifdef NDEBUG #ifdef NDEBUG
@@ -95,7 +95,7 @@ extern void GCDLogMessage(long level, NSString* format, ...) NS_FORMAT_FUNCTION(
} \ } \
} while (0) } while (0)
#define DNOT_REACHED() abort() #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 #endif