Skip to content

Commit 977bf5d

Browse files
Add OSLog support to SFSDKLogger
- New "useOSLog" class property on SFSDKLogger. Defaults to "NO" to preserve existing behavior. Must be set prior to creating logger instances. - If enabled, console logs will use OSLog to provide distinct log lines with metadata instead of the previous plain text logging method
1 parent 31af536 commit 977bf5d

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

libs/SalesforceFileLogger/SalesforceFileLogger/Classes/Logger/SFSDKLogger.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@
6464
*/
6565
@property (nonatomic, readwrite, assign, getter=isFileLoggingEnabled) BOOL fileLoggingEnabled;
6666

67+
/**
68+
* Controls whether to use OSLog for console logging.
69+
* Defaults to NO.
70+
*/
71+
@property (class, nonatomic, readwrite, assign) BOOL useOSLog;
72+
6773
/**
6874
* By default, returns the default shared instance. Child classes implement this method to return an instance with
6975
* their defined component name.

libs/SalesforceFileLogger/SalesforceFileLogger/Classes/Logger/SFSDKLogger.m

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@
2929

3030
#import "SFSDKLogger.h"
3131
#import <SalesforceSDKCommon/NSUserDefaults+SFAdditions.h>
32+
#import <CocoaLumberjack/DDOSLogger.h>
3233
#import <CocoaLumberjack/DDTTYLogger.h>
3334

3435
static NSString * const kDefaultComponentName = @"SFSDK";
3536
static NSString * const kFileLoggerOnOffKey = @"file_logger_enabled";
3637
static NSString * const kLogLevelKey = @"log_level";
3738
static NSString * const kLogIdentifierFormat = @"COMPONENT: %@, CLASS: %@";
3839
static NSMutableDictionary<NSString *, SFSDKLogger *> *loggerList = nil;
40+
static BOOL _useOSLog = NO;
3941

4042
@interface SFSDKLogger ()
4143

@@ -67,6 +69,14 @@ + (instancetype)sharedInstance {
6769
return [self sharedInstanceWithComponent:kDefaultComponentName];
6870
}
6971

72+
+ (BOOL)useOSLog {
73+
return _useOSLog;
74+
}
75+
76+
+ (void)setUseOSLog:(BOOL)useOSLogValue {
77+
_useOSLog = useOSLogValue;
78+
}
79+
7080
+ (void)flushAllComponents:(void (^)(void))completionBlock {
7181
@synchronized ([SFSDKLogger class]) {
7282
__block NSUInteger numberOfLogsLeftToFlush = loggerList.allKeys.count;
@@ -94,9 +104,17 @@ - (instancetype)initWithComponent:(NSString *)componentName {
94104
self.componentName = componentName;
95105
self.logger = [[DDLog alloc] init];
96106
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+
100118
[self.logger addLogger:consoleLogger withLevel:DDLogLogLevelForSFLogLevel(self.logLevel)];
101119
if (self.fileLoggingEnabled) {
102120
[self.logger addLogger:self.fileLogger withLevel:DDLogLogLevelForSFLogLevel(self.logLevel)];
@@ -150,8 +168,16 @@ - (DDLogLevel)ddLogLevel {
150168
- (void)setDdLogLevel:(DDLogLevel)logLevel {
151169
[self storeLogLevel:logLevel];
152170
[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+
155181
[self.logger addLogger:consoleLogger withLevel:logLevel];
156182
[self.logger addLogger:self.fileLogger withLevel:logLevel];
157183
}

0 commit comments

Comments
 (0)