Skip to content

Commit ecb6fcc

Browse files
jaeoptthomaszurkan-optimizely
authored andcommitted
fix all log + error messages (#152)
* add log messages (wip) * add log messages (wip) * add more log messages (wip) * clean error/log messages (wip) * clean up error + log messages * fix large number check for iOS9 * fix a forcedVaraitions bug introduced while adding log messages * cleanup warnings
1 parent 2a0f8ac commit ecb6fcc

23 files changed

+801
-406
lines changed

DemoObjCApp/DemoObjcApp.xcodeproj/project.pbxproj

Lines changed: 138 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
6923C05F4FFD7394581F4361 /* libPods-DemoObjctvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CE090EEBD47E05884C417C0 /* libPods-DemoObjctvOS.a */; };
1212
6E4DD7F721E51E5500B0C2C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF7499F21E404BC008B22A0 /* main.m */; };
1313
6E4DD7F821E51E5600B0C2C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF7499F21E404BC008B22A0 /* main.m */; };
14-
6E4DD97C21E67AAD00B0C2C7 /* OptimizelySwiftSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97521E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */; };
15-
6E4DD97D21E67AAD00B0C2C7 /* OptimizelySwiftSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97521E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
16-
6E4DD98021E67ABA00B0C2C7 /* OptimizelySwiftSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97721E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */; };
17-
6E4DD98121E67ABA00B0C2C7 /* OptimizelySwiftSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97721E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
14+
6E4DD97C21E67AAD00B0C2C7 /* Optimizely.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97521E67A6500B0C2C7 /* Optimizely.framework */; };
15+
6E4DD97D21E67AAD00B0C2C7 /* Optimizely.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97521E67A6500B0C2C7 /* Optimizely.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
16+
6E4DD98021E67ABA00B0C2C7 /* Optimizely.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97721E67A6500B0C2C7 /* Optimizely.framework */; };
17+
6E4DD98121E67ABA00B0C2C7 /* Optimizely.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E4DD97721E67A6500B0C2C7 /* Optimizely.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1818
6E96811521EE94DA009B7FEC /* CustomNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E96811421EE94DA009B7FEC /* CustomNotificationCenter.m */; };
1919
6E96811621EE94DA009B7FEC /* CustomNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E96811421EE94DA009B7FEC /* CustomNotificationCenter.m */; };
2020
6E96817C21EEA321009B7FEC /* tvOSMain.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E96817421EEA321009B7FEC /* tvOSMain.storyboard */; };
@@ -82,6 +82,62 @@
8282
remoteGlobalIDString = 6E614DCC21E3F389005982A1;
8383
remoteInfo = OptimizelySwiftSDKtvOS;
8484
};
85+
6E8D3244226FAC4F00478458 /* PBXContainerItemProxy */ = {
86+
isa = PBXContainerItemProxy;
87+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
88+
proxyType = 2;
89+
remoteGlobalIDString = 6EA4256A2218E60A00B074B5;
90+
remoteInfo = "OptimizelyTests-Common-iOS";
91+
};
92+
6E8D3246226FAC4F00478458 /* PBXContainerItemProxy */ = {
93+
isa = PBXContainerItemProxy;
94+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
95+
proxyType = 2;
96+
remoteGlobalIDString = 6E636B8C2236C91F00AF3CEF;
97+
remoteInfo = "OptimizelyTests-APIs-iOS";
98+
};
99+
6E8D3248226FAC4F00478458 /* PBXContainerItemProxy */ = {
100+
isa = PBXContainerItemProxy;
101+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
102+
proxyType = 2;
103+
remoteGlobalIDString = 6EA425792218E61E00B074B5;
104+
remoteInfo = "OptimizelyTests-DataModel-iOS";
105+
};
106+
6E8D324A226FAC4F00478458 /* PBXContainerItemProxy */ = {
107+
isa = PBXContainerItemProxy;
108+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
109+
proxyType = 2;
110+
remoteGlobalIDString = 6EA4265B2219242100B074B5;
111+
remoteInfo = "OptimizelyTests-Others-iOS";
112+
};
113+
6E8D324C226FAC4F00478458 /* PBXContainerItemProxy */ = {
114+
isa = PBXContainerItemProxy;
115+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
116+
proxyType = 2;
117+
remoteGlobalIDString = 6E636B9B2236C96700AF3CEF;
118+
remoteInfo = "OptimizelyTests-Legacy-iOS";
119+
};
120+
6E8D324E226FAC4F00478458 /* PBXContainerItemProxy */ = {
121+
isa = PBXContainerItemProxy;
122+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
123+
proxyType = 2;
124+
remoteGlobalIDString = 6EA425082218E41500B074B5;
125+
remoteInfo = "OptimizelyTests-Common-tvOS";
126+
};
127+
6E8D3250226FAC4F00478458 /* PBXContainerItemProxy */ = {
128+
isa = PBXContainerItemProxy;
129+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
130+
proxyType = 2;
131+
remoteGlobalIDString = 6EA4255B2218E58400B074B5;
132+
remoteInfo = "OptimizelyTests-DataModel-tvOS";
133+
};
134+
6E8D3252226FAC4F00478458 /* PBXContainerItemProxy */ = {
135+
isa = PBXContainerItemProxy;
136+
containerPortal = 6E4DD96D21E67A6500B0C2C7 /* OptimizelySwiftSDK.xcodeproj */;
137+
proxyType = 2;
138+
remoteGlobalIDString = 6EA4266A2219243D00B074B5;
139+
remoteInfo = "OptimizelyTests-Others-tvOS";
140+
};
85141
/* End PBXContainerItemProxy section */
86142

87143
/* Begin PBXCopyFilesBuildPhase section */
@@ -91,7 +147,7 @@
91147
dstPath = "";
92148
dstSubfolderSpec = 10;
93149
files = (
94-
6E4DD97D21E67AAD00B0C2C7 /* OptimizelySwiftSDK.framework in Embed Frameworks */,
150+
6E4DD97D21E67AAD00B0C2C7 /* Optimizely.framework in Embed Frameworks */,
95151
);
96152
name = "Embed Frameworks";
97153
runOnlyForDeploymentPostprocessing = 0;
@@ -102,7 +158,7 @@
102158
dstPath = "";
103159
dstSubfolderSpec = 10;
104160
files = (
105-
6E4DD98121E67ABA00B0C2C7 /* OptimizelySwiftSDK.framework in Embed Frameworks */,
161+
6E4DD98121E67ABA00B0C2C7 /* Optimizely.framework in Embed Frameworks */,
106162
);
107163
name = "Embed Frameworks";
108164
runOnlyForDeploymentPostprocessing = 0;
@@ -149,15 +205,15 @@
149205
buildActionMask = 2147483647;
150206
files = (
151207
361EF872CB7D0F6C8202145F /* Pods_DemoObjciOS.framework in Frameworks */,
152-
6E4DD97C21E67AAD00B0C2C7 /* OptimizelySwiftSDK.framework in Frameworks */,
208+
6E4DD97C21E67AAD00B0C2C7 /* Optimizely.framework in Frameworks */,
153209
);
154210
runOnlyForDeploymentPostprocessing = 0;
155211
};
156212
6EF749A521E404D6008B22A0 /* Frameworks */ = {
157213
isa = PBXFrameworksBuildPhase;
158214
buildActionMask = 2147483647;
159215
files = (
160-
6E4DD98021E67ABA00B0C2C7 /* OptimizelySwiftSDK.framework in Frameworks */,
216+
6E4DD98021E67ABA00B0C2C7 /* Optimizely.framework in Frameworks */,
161217
6923C05F4FFD7394581F4361 /* libPods-DemoObjctvOS.a in Frameworks */,
162218
);
163219
runOnlyForDeploymentPostprocessing = 0;
@@ -168,10 +224,18 @@
168224
6E4DD96E21E67A6500B0C2C7 /* Products */ = {
169225
isa = PBXGroup;
170226
children = (
171-
6E4DD97521E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */,
172-
6E4DD97721E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */,
227+
6E4DD97521E67A6500B0C2C7 /* Optimizely.framework */,
228+
6E4DD97721E67A6500B0C2C7 /* Optimizely.framework */,
173229
6E4DD97921E67A6500B0C2C7 /* OptimizelySwiftSDK-iOSTests.xctest */,
230+
6E8D3245226FAC4F00478458 /* OptimizelyTests-Common-iOS.xctest */,
231+
6E8D3247226FAC4F00478458 /* OptimizelyTests-APIs-iOS.xctest */,
232+
6E8D3249226FAC4F00478458 /* OptimizelyTests-DataModel-iOS.xctest */,
233+
6E8D324B226FAC4F00478458 /* OptimizelyTests-Others-iOS.xctest */,
234+
6E8D324D226FAC4F00478458 /* OptimizelyTests-Legacy-iOS.xctest */,
174235
6E4DD97B21E67A6500B0C2C7 /* OptimizelySwiftSDK-tvOSTests.xctest */,
236+
6E8D324F226FAC4F00478458 /* OptimizelyTests-Common-tvOS.xctest */,
237+
6E8D3251226FAC4F00478458 /* OptimizelyTests-DataModel-tvOS.xctest */,
238+
6E8D3253226FAC4F00478458 /* OptimizelyTests-Others-tvOS.xctest */,
175239
);
176240
name = Products;
177241
sourceTree = "<group>";
@@ -386,34 +450,90 @@
386450
/* End PBXProject section */
387451

388452
/* Begin PBXReferenceProxy section */
389-
6E4DD97521E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */ = {
453+
6E4DD97521E67A6500B0C2C7 /* Optimizely.framework */ = {
390454
isa = PBXReferenceProxy;
391455
fileType = wrapper.framework;
392-
path = OptimizelySwiftSDK.framework;
456+
path = Optimizely.framework;
393457
remoteRef = 6E4DD97421E67A6500B0C2C7 /* PBXContainerItemProxy */;
394458
sourceTree = BUILT_PRODUCTS_DIR;
395459
};
396-
6E4DD97721E67A6500B0C2C7 /* OptimizelySwiftSDK.framework */ = {
460+
6E4DD97721E67A6500B0C2C7 /* Optimizely.framework */ = {
397461
isa = PBXReferenceProxy;
398462
fileType = wrapper.framework;
399-
path = OptimizelySwiftSDK.framework;
463+
path = Optimizely.framework;
400464
remoteRef = 6E4DD97621E67A6500B0C2C7 /* PBXContainerItemProxy */;
401465
sourceTree = BUILT_PRODUCTS_DIR;
402466
};
403467
6E4DD97921E67A6500B0C2C7 /* OptimizelySwiftSDK-iOSTests.xctest */ = {
404468
isa = PBXReferenceProxy;
405469
fileType = wrapper.cfbundle;
406-
path = "OptimizelySwiftSDK-iOSTests.xctest";
470+
path = "OptimizelyTests-iOS.xctest";
407471
remoteRef = 6E4DD97821E67A6500B0C2C7 /* PBXContainerItemProxy */;
408472
sourceTree = BUILT_PRODUCTS_DIR;
409473
};
410474
6E4DD97B21E67A6500B0C2C7 /* OptimizelySwiftSDK-tvOSTests.xctest */ = {
411475
isa = PBXReferenceProxy;
412476
fileType = wrapper.cfbundle;
413-
path = "OptimizelySwiftSDK-tvOSTests.xctest";
477+
path = "OptimizelyTests-tvOS.xctest";
414478
remoteRef = 6E4DD97A21E67A6500B0C2C7 /* PBXContainerItemProxy */;
415479
sourceTree = BUILT_PRODUCTS_DIR;
416480
};
481+
6E8D3245226FAC4F00478458 /* OptimizelyTests-Common-iOS.xctest */ = {
482+
isa = PBXReferenceProxy;
483+
fileType = wrapper.cfbundle;
484+
path = "OptimizelyTests-Common-iOS.xctest";
485+
remoteRef = 6E8D3244226FAC4F00478458 /* PBXContainerItemProxy */;
486+
sourceTree = BUILT_PRODUCTS_DIR;
487+
};
488+
6E8D3247226FAC4F00478458 /* OptimizelyTests-APIs-iOS.xctest */ = {
489+
isa = PBXReferenceProxy;
490+
fileType = wrapper.cfbundle;
491+
path = "OptimizelyTests-APIs-iOS.xctest";
492+
remoteRef = 6E8D3246226FAC4F00478458 /* PBXContainerItemProxy */;
493+
sourceTree = BUILT_PRODUCTS_DIR;
494+
};
495+
6E8D3249226FAC4F00478458 /* OptimizelyTests-DataModel-iOS.xctest */ = {
496+
isa = PBXReferenceProxy;
497+
fileType = wrapper.cfbundle;
498+
path = "OptimizelyTests-DataModel-iOS.xctest";
499+
remoteRef = 6E8D3248226FAC4F00478458 /* PBXContainerItemProxy */;
500+
sourceTree = BUILT_PRODUCTS_DIR;
501+
};
502+
6E8D324B226FAC4F00478458 /* OptimizelyTests-Others-iOS.xctest */ = {
503+
isa = PBXReferenceProxy;
504+
fileType = wrapper.cfbundle;
505+
path = "OptimizelyTests-Others-iOS.xctest";
506+
remoteRef = 6E8D324A226FAC4F00478458 /* PBXContainerItemProxy */;
507+
sourceTree = BUILT_PRODUCTS_DIR;
508+
};
509+
6E8D324D226FAC4F00478458 /* OptimizelyTests-Legacy-iOS.xctest */ = {
510+
isa = PBXReferenceProxy;
511+
fileType = wrapper.cfbundle;
512+
path = "OptimizelyTests-Legacy-iOS.xctest";
513+
remoteRef = 6E8D324C226FAC4F00478458 /* PBXContainerItemProxy */;
514+
sourceTree = BUILT_PRODUCTS_DIR;
515+
};
516+
6E8D324F226FAC4F00478458 /* OptimizelyTests-Common-tvOS.xctest */ = {
517+
isa = PBXReferenceProxy;
518+
fileType = wrapper.cfbundle;
519+
path = "OptimizelyTests-Common-tvOS.xctest";
520+
remoteRef = 6E8D324E226FAC4F00478458 /* PBXContainerItemProxy */;
521+
sourceTree = BUILT_PRODUCTS_DIR;
522+
};
523+
6E8D3251226FAC4F00478458 /* OptimizelyTests-DataModel-tvOS.xctest */ = {
524+
isa = PBXReferenceProxy;
525+
fileType = wrapper.cfbundle;
526+
path = "OptimizelyTests-DataModel-tvOS.xctest";
527+
remoteRef = 6E8D3250226FAC4F00478458 /* PBXContainerItemProxy */;
528+
sourceTree = BUILT_PRODUCTS_DIR;
529+
};
530+
6E8D3253226FAC4F00478458 /* OptimizelyTests-Others-tvOS.xctest */ = {
531+
isa = PBXReferenceProxy;
532+
fileType = wrapper.cfbundle;
533+
path = "OptimizelyTests-Others-tvOS.xctest";
534+
remoteRef = 6E8D3252226FAC4F00478458 /* PBXContainerItemProxy */;
535+
sourceTree = BUILT_PRODUCTS_DIR;
536+
};
417537
/* End PBXReferenceProxy section */
418538

419539
/* Begin PBXResourcesBuildPhase section */
@@ -700,6 +820,7 @@
700820
isa = XCBuildConfiguration;
701821
baseConfigurationReference = 4BE4886BF950708C866FA8F2 /* Pods-DemoObjciOS.debug.xcconfig */;
702822
buildSettings = {
823+
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
703824
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
704825
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
705826
CODE_SIGN_STYLE = Automatic;
@@ -718,6 +839,7 @@
718839
isa = XCBuildConfiguration;
719840
baseConfigurationReference = D66FA87FA967DCE9F1972546 /* Pods-DemoObjciOS.release.xcconfig */;
720841
buildSettings = {
842+
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
721843
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
722844
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
723845
CODE_SIGN_STYLE = Automatic;

DemoSwiftApp/AppDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
167167
// while true
168168
//
169169
// }
170-
} catch OptimizelyError.experimentNotParticipated {
170+
} catch OptimizelyError.variationUnknown(userId, experimentKey) {
171171
print("Optimizely SDK activation cannot map this user to experiemnt")
172172
openVariationView(optimizelyManager: optimizely, variationKey: nil)
173173
} catch {

OptimizelySDK/Customization/DefaultEventDispatcher.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,15 @@ open class DefaultEventDispatcher : BackgroundingCallbacks, OPTEventDispatcher {
123123
}
124124

125125
guard let event = eventToSend else {
126-
self.logger?.log(level: .error, message: "Cannot find event to send")
126+
self.logger?.e(.eventBatchFailed)
127127
resetBatch()
128128
break
129129
}
130130

131131
// we've exhuasted our failure count. Give up and try the next time a event
132132
// is queued or someone calls flush.
133133
if failureCount > DefaultEventDispatcher.MAX_FAILURE_COUNT {
134-
self.logger?.log(level: .error, message:"EventDispatcher failed to send \(failureCount) times. Backing off.")
134+
self.logger?.e(.eventSendRetyFailed(failureCount))
135135
failureCount = 0
136136
resetBatch()
137137
break;
@@ -142,7 +142,7 @@ open class DefaultEventDispatcher : BackgroundingCallbacks, OPTEventDispatcher {
142142
self.sendEvent(event: event) { (result) -> (Void) in
143143
switch result {
144144
case .failure(let error):
145-
self.logger?.log(level: .error, message: error.localizedDescription)
145+
self.logger?.e(error.localizedDescription)
146146
failureCount += 1
147147
case .success(_):
148148
// we succeeded. remove the batch size sent.
@@ -191,13 +191,13 @@ open class DefaultEventDispatcher : BackgroundingCallbacks, OPTEventDispatcher {
191191
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
192192

193193
let task = session.uploadTask(with: request, from: event.body) { (data, response, error) in
194-
self.logger?.log(level: .debug, message: response.debugDescription)
194+
self.logger?.d(response.debugDescription)
195195

196196
if let error = error {
197197
completionHandler(.failure(.eventDispatchFailed(error.localizedDescription)))
198198
}
199199
else {
200-
self.logger?.log(level: .debug, message: "Event Sent")
200+
self.logger?.d("Event Sent")
201201
completionHandler(.success(event.body))
202202
}
203203
}

OptimizelySDK/Customization/DefaultLogger.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ open class DefaultLogger : OPTLogger {
3737
if level.rawValue > DefaultLogger.logLevel.rawValue {
3838
return
3939
}
40-
let message = "[OPTIMIZELY SDK][" + level.name + "]:" + message
40+
let message = "[OPTIMIZELY][" + level.name + "]:" + message
4141
NSLog(message)
4242
}
4343
}

OptimizelySDK/Customization/Protocols/OPTLogger.swift

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,37 @@ import Foundation
2828
- Parameter message: The message to log.
2929
*/
3030
func log(level: OptimizelyLogLevel, message: String)
31-
31+
3232
}
3333

34+
extension OPTLogger {
35+
36+
// MARK: - Utils
37+
38+
func e(_ message: String) { log(level: .error, message: message) }
39+
func w(_ message: String) { log(level: .warning, message: message) }
40+
func i(_ message: String) { log(level: .info, message: message) }
41+
func d(_ message: String) { log(level: .debug, message: message) }
42+
43+
// MARK: - Utils for LogMessage
44+
45+
func e(_ message: LogMessage) { log(level: .error, message: message.description) }
46+
func w(_ message: LogMessage) { log(level: .warning, message: message.description) }
47+
func i(_ message: LogMessage) { log(level: .info, message: message.description) }
48+
func d(_ message: LogMessage) { log(level: .debug, message: message.description) }
49+
50+
// MARK: - Utils for OptimizelyError log
51+
52+
func e(_ error: OptimizelyError?, source: String?=nil) { log(level: .error, message: errorMessageFormat(error, source)) }
53+
func w(_ error: OptimizelyError?, source: String?=nil) { log(level: .warning, message: errorMessageFormat(error, source)) }
54+
func i(_ error: OptimizelyError?, source: String?=nil) { log(level: .info, message: errorMessageFormat(error, source)) }
55+
func d(_ error: OptimizelyError?, source: String?=nil) { log(level: .debug, message: errorMessageFormat(error, source)) }
56+
57+
func errorMessageFormat(_ error: OptimizelyError?, _ source: String?) -> String {
58+
var message = error?.reason ?? "Unknown Error"
59+
if let src = source {
60+
message = "(\(src)) " + message
61+
}
62+
return message
63+
}
64+
}

0 commit comments

Comments
 (0)