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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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