|
29 | 29 |
|
30 | 30 | #import "SFSDKLogger.h" |
31 | 31 | #import <SalesforceSDKCommon/NSUserDefaults+SFAdditions.h> |
| 32 | +#import <CocoaLumberjack/DDOSLogger.h> |
32 | 33 | #import <CocoaLumberjack/DDTTYLogger.h> |
33 | 34 |
|
34 | 35 | static NSString * const kDefaultComponentName = @"SFSDK"; |
35 | 36 | static NSString * const kFileLoggerOnOffKey = @"file_logger_enabled"; |
36 | 37 | static NSString * const kLogLevelKey = @"log_level"; |
37 | 38 | static NSString * const kLogIdentifierFormat = @"COMPONENT: %@, CLASS: %@"; |
38 | 39 | static NSMutableDictionary<NSString *, SFSDKLogger *> *loggerList = nil; |
| 40 | +static BOOL _useOSLog = NO; |
39 | 41 |
|
40 | 42 | @interface SFSDKLogger () |
41 | 43 |
|
@@ -67,6 +69,14 @@ + (instancetype)sharedInstance { |
67 | 69 | return [self sharedInstanceWithComponent:kDefaultComponentName]; |
68 | 70 | } |
69 | 71 |
|
| 72 | ++ (BOOL)useOSLog { |
| 73 | + return _useOSLog; |
| 74 | +} |
| 75 | + |
| 76 | ++ (void)setUseOSLog:(BOOL)useOSLogValue { |
| 77 | + _useOSLog = useOSLogValue; |
| 78 | +} |
| 79 | + |
70 | 80 | + (void)flushAllComponents:(void (^)(void))completionBlock { |
71 | 81 | @synchronized ([SFSDKLogger class]) { |
72 | 82 | __block NSUInteger numberOfLogsLeftToFlush = loggerList.allKeys.count; |
@@ -94,9 +104,17 @@ - (instancetype)initWithComponent:(NSString *)componentName { |
94 | 104 | self.componentName = componentName; |
95 | 105 | self.logger = [[DDLog alloc] init]; |
96 | 106 | self.fileLogger = [[SFSDKFileLogger alloc] initWithComponent:componentName]; |
97 | | - DDTTYLogger *consoleLogger = [DDTTYLogger sharedInstance]; |
98 | | - consoleLogger.logFormatter = [[SFSDKFormatter alloc] init]; |
99 | | - consoleLogger.colorsEnabled = YES; |
| 107 | + |
| 108 | + id<DDLogger> consoleLogger; |
| 109 | + if ([self.class useOSLog]) { |
| 110 | + consoleLogger = [[DDOSLogger alloc] initWithSubsystem:[[NSBundle mainBundle] bundleIdentifier] category:componentName]; |
| 111 | + } else { |
| 112 | + DDTTYLogger *ttyLogger = [DDTTYLogger sharedInstance]; |
| 113 | + ttyLogger.logFormatter = [[SFSDKFormatter alloc] init]; |
| 114 | + ttyLogger.colorsEnabled = YES; |
| 115 | + consoleLogger = ttyLogger; |
| 116 | + } |
| 117 | + |
100 | 118 | [self.logger addLogger:consoleLogger withLevel:DDLogLogLevelForSFLogLevel(self.logLevel)]; |
101 | 119 | if (self.fileLoggingEnabled) { |
102 | 120 | [self.logger addLogger:self.fileLogger withLevel:DDLogLogLevelForSFLogLevel(self.logLevel)]; |
@@ -150,8 +168,16 @@ - (DDLogLevel)ddLogLevel { |
150 | 168 | - (void)setDdLogLevel:(DDLogLevel)logLevel { |
151 | 169 | [self storeLogLevel:logLevel]; |
152 | 170 | [self.logger removeAllLoggers]; |
153 | | - DDTTYLogger *consoleLogger = [DDTTYLogger sharedInstance]; |
154 | | - consoleLogger.colorsEnabled = YES; |
| 171 | + |
| 172 | + id<DDLogger> consoleLogger; |
| 173 | + if ([self.class useOSLog]) { |
| 174 | + consoleLogger = [[DDOSLogger alloc] initWithSubsystem:[[NSBundle mainBundle] bundleIdentifier] category:self.componentName]; |
| 175 | + } else { |
| 176 | + DDTTYLogger *ttyLogger = [DDTTYLogger sharedInstance]; |
| 177 | + ttyLogger.colorsEnabled = YES; |
| 178 | + consoleLogger = ttyLogger; |
| 179 | + } |
| 180 | + |
155 | 181 | [self.logger addLogger:consoleLogger withLevel:logLevel]; |
156 | 182 | [self.logger addLogger:self.fileLogger withLevel:logLevel]; |
157 | 183 | } |
|
0 commit comments