@@ -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/OptimizelyLogger.dart' ;
32+ import 'package:optimizely_flutter_sdk/src/logger/LoggerBridge.dart' ;
3133
3234export 'package:optimizely_flutter_sdk/src/optimizely_client_wrapper.dart'
3335 show ClientPlatform, ListenerType;
@@ -68,20 +70,37 @@ class OptimizelyFlutterSdk {
6870 final Set <OptimizelyDecideOption > _defaultDecideOptions;
6971 final OptimizelyLogLevel _defaultLogLevel;
7072 final SDKSettings _sdkSettings;
73+ final OptimizelyLogger ? _logger; // Add logger field
74+ static OptimizelyLogger ? _customLogger;
75+ /// Set a custom logger for the SDK
76+ static void setLogger (OptimizelyLogger logger) {
77+ _customLogger = logger;
78+ LoggerBridge .initialize ();
79+ }
80+ /// Get the current logger
81+ static OptimizelyLogger ? get logger {
82+ return _customLogger;
83+ }
7184 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;
85+ {EventOptions eventOptions = const EventOptions (),
86+ int datafilePeriodicDownloadInterval = 10 * 60 ,
87+ Map <ClientPlatform , DatafileHostOptions > datafileHostOptions = const {},
88+ Set <OptimizelyDecideOption > defaultDecideOptions = const {},
89+ OptimizelyLogLevel defaultLogLevel = OptimizelyLogLevel .info,
90+ SDKSettings sdkSettings = const SDKSettings (),
91+ OptimizelyLogger ? logger}) // Add logger parameter
92+ : _eventOptions = eventOptions,
93+ _datafilePeriodicDownloadInterval = datafilePeriodicDownloadInterval,
94+ _datafileHostOptions = datafileHostOptions,
95+ _defaultDecideOptions = defaultDecideOptions,
96+ _defaultLogLevel = defaultLogLevel,
97+ _sdkSettings = sdkSettings,
98+ _logger = logger {
99+ // Set the logger if provided
100+ if (logger != null ) {
101+ setLogger (logger);
102+ }
103+ }
85104
86105 /// Starts Optimizely SDK (Synchronous) with provided sdkKey.
87106 Future <BaseResponse > initializeClient () async {
@@ -92,7 +111,9 @@ class OptimizelyFlutterSdk {
92111 _datafileHostOptions,
93112 _defaultDecideOptions,
94113 _defaultLogLevel,
95- _sdkSettings);
114+ _sdkSettings,
115+ _logger
116+ );
96117 }
97118
98119 /// Use the activate method to start an experiment.
0 commit comments