From d02e0f5fd66203bb91f22aea13e2311857731442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Spie=C3=9F?= Date: Sat, 16 Apr 2016 00:23:56 +0200 Subject: [PATCH] Make LogHandler customizable --- Classes/BITHockeyLogger.h | 8 ++++++-- Classes/BITHockeyLogger.m | 20 +++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Classes/BITHockeyLogger.h b/Classes/BITHockeyLogger.h index d612b3473f..ca1167356a 100644 --- a/Classes/BITHockeyLogger.h +++ b/Classes/BITHockeyLogger.h @@ -3,18 +3,22 @@ #import #import "HockeySDKEnums.h" -#define BITHockeyLog(_level, _message, ...) [BITHockeyLogger logLevel:_level function:__PRETTY_FUNCTION__ line:__LINE__ message:_message, ##__VA_ARGS__] +#define BITHockeyLog(_level, _message, ...) [BITHockeyLogger logLevel:_level file:__FILE__ function:__PRETTY_FUNCTION__ line:__LINE__ message:_message, ##__VA_ARGS__] #define BITHockeyLogError(format, ...) BITHockeyLog(BITLogLevelError, format, ##__VA_ARGS__) #define BITHockeyLogWarning(format, ...) BITHockeyLog(BITLogLevelWarning, format, ##__VA_ARGS__) #define BITHockeyLogDebug(format, ...) BITHockeyLog(BITLogLevelDebug, format, ##__VA_ARGS__) #define BITHockeyLogVerbose(format, ...) BITHockeyLog(BITLogLevelVerbose, format, ##__VA_ARGS__) +typedef void (^BITLogHandler)(BITLogLevel, const char *, const char *, uint, NSString *); + @interface BITHockeyLogger : NSObject + (BITLogLevel)currentLogLevel; + (void)setCurrentLogLevel:(BITLogLevel)currentLogLevel; -+ (void)logLevel:(BITLogLevel)loglevel function:(const char *)function line:(int)line message:(NSString *)message, ...; ++ (void)setLogHandler:(BITLogHandler)logHandler; + ++ (void)logLevel:(BITLogLevel)loglevel file:(const char *)file function:(const char *)function line:(uint)line message:(NSString *)message, ...; @end diff --git a/Classes/BITHockeyLogger.m b/Classes/BITHockeyLogger.m index f72b7a81e8..100ae23741 100644 --- a/Classes/BITHockeyLogger.m +++ b/Classes/BITHockeyLogger.m @@ -13,14 +13,24 @@ static BITLogLevel _currentLogLevel = BITLogLevelWarning; _currentLogLevel = currentLogLevel; } -+ (void)logLevel:(BITLogLevel)logLevel function:(const char *)function line:(int)line message:(NSString *)message, ... { - va_list args; +static BITLogHandler currentLogHandler = ^(BITLogLevel logLevel, const char *file, const char *function, uint line, NSString *message) { if (message) { - va_start(args, message); - if (self.currentLogLevel < logLevel) { + if (_currentLogLevel < logLevel) { return; } - NSLog((@"[HockeySDK] %s/%d %@"), function, line, [[NSString alloc] initWithFormat:message arguments:args]); + NSLog((@"[HockeySDK] %s/%d %@"), function, line, message); + } +}; + ++ (void)setLogHandler:(BITLogHandler)logHandler { + currentLogHandler = logHandler; +} + ++ (void)logLevel:(BITLogLevel)loglevel file:(const char *)file function:(const char *)function line:(uint)line message:(NSString *)message, ... { + if (currentLogHandler) { + va_list args; + va_start(args, message); + currentLogHandler(loglevel, file, function, line, [[NSString alloc] initWithFormat:message arguments:args]); va_end(args); } }