@@ -28,6 +28,8 @@ import 'package:optimizely_flutter_sdk/src/data_objects/optimizely_config_respon
2828import 'package:optimizely_flutter_sdk/src/optimizely_client_wrapper.dart' ;
2929import 'package:optimizely_flutter_sdk/src/user_context/optimizely_user_context.dart' ;
3030import 'package:optimizely_flutter_sdk/src/data_objects/log_level.dart' ;
31+ import 'package:optimizely_flutter_sdk/src/logger/flutter_logger.dart' ;
32+ import 'package:optimizely_flutter_sdk/src/logger/logger_bridge.dart' ;
3133
3234export 'package:optimizely_flutter_sdk/src/optimizely_client_wrapper.dart'
3335 show ClientPlatform, ListenerType;
@@ -53,6 +55,8 @@ export 'package:optimizely_flutter_sdk/src/data_objects/datafile_options.dart'
5355 show DatafileHostOptions;
5456export 'package:optimizely_flutter_sdk/src/data_objects/log_level.dart'
5557 show OptimizelyLogLevel;
58+ export 'package:optimizely_flutter_sdk/src/logger/flutter_logger.dart'
59+ show OptimizelyLogger;
5660
5761/// The main client class for the Optimizely Flutter SDK.
5862///
@@ -68,20 +72,37 @@ class OptimizelyFlutterSdk {
6872 final Set <OptimizelyDecideOption > _defaultDecideOptions;
6973 final OptimizelyLogLevel _defaultLogLevel;
7074 final SDKSettings _sdkSettings;
75+ static OptimizelyLogger ? _customLogger;
76+ /// Set a custom logger for the SDK
77+ static void setLogger (OptimizelyLogger logger) {
78+ _customLogger = logger;
79+ LoggerBridge .initialize (logger);
80+ }
81+ /// Get the current logger
82+ static OptimizelyLogger ? get logger {
83+ return _customLogger;
84+ }
7185 OptimizelyFlutterSdk (this ._sdkKey,
72- {EventOptions eventOptions = const EventOptions (),
73- int datafilePeriodicDownloadInterval =
74- 10 * 60 , // Default time interval in seconds
75- Map <ClientPlatform , DatafileHostOptions > datafileHostOptions = const {},
76- Set <OptimizelyDecideOption > defaultDecideOptions = const {},
77- OptimizelyLogLevel defaultLogLevel = OptimizelyLogLevel .info,
78- SDKSettings sdkSettings = const SDKSettings ()})
79- : _eventOptions = eventOptions,
80- _datafilePeriodicDownloadInterval = datafilePeriodicDownloadInterval,
81- _datafileHostOptions = datafileHostOptions,
82- _defaultDecideOptions = defaultDecideOptions,
83- _defaultLogLevel = defaultLogLevel,
84- _sdkSettings = sdkSettings;
86+ {EventOptions eventOptions = const EventOptions (),
87+ int datafilePeriodicDownloadInterval = 10 * 60 ,
88+ Map <ClientPlatform , DatafileHostOptions > datafileHostOptions = const {},
89+ Set <OptimizelyDecideOption > defaultDecideOptions = const {},
90+ OptimizelyLogLevel defaultLogLevel = OptimizelyLogLevel .info,
91+ SDKSettings sdkSettings = const SDKSettings (),
92+ OptimizelyLogger ? logger})
93+ : _eventOptions = eventOptions,
94+ _datafilePeriodicDownloadInterval = datafilePeriodicDownloadInterval,
95+ _datafileHostOptions = datafileHostOptions,
96+ _defaultDecideOptions = defaultDecideOptions,
97+ _defaultLogLevel = defaultLogLevel,
98+ _sdkSettings = sdkSettings {
99+ // Set the logger if provided
100+ if (logger != null ) {
101+ setLogger (logger);
102+ } else {
103+ logWarning ("Logger not provided." );
104+ }
105+ }
85106
86107 /// Starts Optimizely SDK (Synchronous) with provided sdkKey.
87108 Future <BaseResponse > initializeClient () async {
@@ -92,7 +113,9 @@ class OptimizelyFlutterSdk {
92113 _datafileHostOptions,
93114 _defaultDecideOptions,
94115 _defaultLogLevel,
95- _sdkSettings);
116+ _sdkSettings,
117+ _customLogger
118+ );
96119 }
97120
98121 /// Use the activate method to start an experiment.
0 commit comments