Skip to content

Commit 8273aad

Browse files
fix for blue apron by providing default logger if none is supplied. (#195)
* fix for blue apron by providing default logger if none is supplied. * add a lightweight slf4j logger that uses android native logging. use only if we get failures to load the logger from the LoggerFactory * add a use of lite logger if we fail with Error as well.
1 parent 14c84f9 commit 8273aad

File tree

2 files changed

+360
-3
lines changed

2 files changed

+360
-3
lines changed
Lines changed: 345 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,345 @@
1+
package com.optimizely.ab.android.sdk;
2+
3+
import android.util.Log;
4+
5+
import org.slf4j.Logger;
6+
import org.slf4j.Marker;
7+
8+
public class OptimizelyLiteLogger implements Logger {
9+
10+
private final String tag;
11+
12+
public OptimizelyLiteLogger(String name) {
13+
tag = name;
14+
}
15+
16+
@Override
17+
public String getName() {
18+
19+
return "OptimizelyLiteLogger";
20+
}
21+
22+
@Override
23+
public boolean isTraceEnabled() {
24+
return false;
25+
}
26+
27+
@Override
28+
public void trace(String msg) {
29+
30+
}
31+
32+
@Override
33+
public void trace(String format, Object arg) {
34+
35+
}
36+
37+
@Override
38+
public void trace(String format, Object arg1, Object arg2) {
39+
40+
}
41+
42+
@Override
43+
public void trace(String format, Object... arguments) {
44+
45+
}
46+
47+
@Override
48+
public void trace(String msg, Throwable t) {
49+
50+
}
51+
52+
@Override
53+
public boolean isTraceEnabled(Marker marker) {
54+
return false;
55+
}
56+
57+
@Override
58+
public void trace(Marker marker, String msg) {
59+
60+
}
61+
62+
@Override
63+
public void trace(Marker marker, String format, Object arg) {
64+
65+
}
66+
67+
@Override
68+
public void trace(Marker marker, String format, Object arg1, Object arg2) {
69+
70+
}
71+
72+
@Override
73+
public void trace(Marker marker, String format, Object... argArray) {
74+
75+
}
76+
77+
@Override
78+
public void trace(Marker marker, String msg, Throwable t) {
79+
80+
}
81+
82+
@Override
83+
public boolean isDebugEnabled() {
84+
if (BuildConfig.DEBUG) {
85+
return true;
86+
}
87+
88+
return false;
89+
}
90+
91+
@Override
92+
public void debug(String msg) {
93+
if (BuildConfig.DEBUG) {
94+
Log.d(tag, msg );
95+
}
96+
97+
}
98+
99+
@Override
100+
public void debug(String format, Object arg) {
101+
Log.d(tag, formatMessage(format, arg) );
102+
}
103+
104+
@Override
105+
public void debug(String format, Object arg1, Object arg2) {
106+
Log.d(tag, formatMessage(format, arg1, arg2));
107+
}
108+
109+
@Override
110+
public void debug(String format, Object... arguments) {
111+
Log.d(tag, formatMessage(format, arguments));
112+
}
113+
114+
@Override
115+
public void debug(String msg, Throwable t) {
116+
Log.d(tag, formatThrowable(msg, t));
117+
}
118+
119+
@Override
120+
public boolean isDebugEnabled(Marker marker) {
121+
return false;
122+
}
123+
124+
@Override
125+
public void debug(Marker marker, String msg) {
126+
Log.d(tag, msg);
127+
}
128+
129+
@Override
130+
public void debug(Marker marker, String format, Object arg) {
131+
Log.d(tag, formatMessage(format, arg));
132+
}
133+
134+
@Override
135+
public void debug(Marker marker, String format, Object arg1, Object arg2) {
136+
Log.d(tag, formatMessage(format, arg1, arg2));
137+
}
138+
139+
@Override
140+
public void debug(Marker marker, String format, Object... arguments) {
141+
Log.d(tag, formatMessage(format, arguments));
142+
}
143+
144+
@Override
145+
public void debug(Marker marker, String msg, Throwable t) {
146+
Log.d(tag, formatThrowable(msg, t));
147+
}
148+
149+
@Override
150+
public boolean isInfoEnabled() {
151+
if (BuildConfig.DEBUG) {
152+
return true;
153+
}
154+
return false;
155+
}
156+
157+
@Override
158+
public void info(String msg) {
159+
Log.i(tag, msg);
160+
}
161+
162+
@Override
163+
public void info(String format, Object arg) {
164+
Log.i(tag, formatMessage(format, arg));
165+
}
166+
167+
@Override
168+
public void info(String format, Object arg1, Object arg2) {
169+
Log.i(tag, formatMessage(format, arg1, arg2));
170+
}
171+
172+
@Override
173+
public void info(String format, Object... arguments) {
174+
Log.i(tag, formatMessage(format, arguments));
175+
}
176+
177+
@Override
178+
public void info(String msg, Throwable t) {
179+
Log.i(tag, formatThrowable(msg, t));
180+
}
181+
182+
@Override
183+
public boolean isInfoEnabled(Marker marker) {
184+
return false;
185+
}
186+
187+
@Override
188+
public void info(Marker marker, String msg) {
189+
Log.i(tag, msg);
190+
}
191+
192+
@Override
193+
public void info(Marker marker, String format, Object arg) {
194+
Log.i(tag, formatMessage(format, arg));
195+
}
196+
197+
@Override
198+
public void info(Marker marker, String format, Object arg1, Object arg2) {
199+
Log.i(tag, formatMessage(format, arg1, arg2));
200+
}
201+
202+
@Override
203+
public void info(Marker marker, String format, Object... arguments) {
204+
Log.i(tag, formatMessage(format, arguments));
205+
}
206+
207+
@Override
208+
public void info(Marker marker, String msg, Throwable t) {
209+
Log.i(tag, formatThrowable(msg, t));
210+
}
211+
212+
@Override
213+
public boolean isWarnEnabled() {
214+
return true;
215+
}
216+
217+
@Override
218+
public void warn(String msg) {
219+
Log.w(tag, msg);
220+
221+
}
222+
223+
@Override
224+
public void warn(String format, Object arg) {
225+
Log.w(tag, formatMessage(format, arg));
226+
}
227+
228+
@Override
229+
public void warn(String format, Object... arguments) {
230+
Log.w(tag, formatMessage(format, arguments));
231+
}
232+
233+
@Override
234+
public void warn(String format, Object arg1, Object arg2) {
235+
Log.w(tag, formatMessage(format, arg1, arg2));
236+
}
237+
238+
@Override
239+
public void warn(String msg, Throwable t) {
240+
Log.w(tag, formatThrowable(msg, t));
241+
}
242+
243+
@Override
244+
public boolean isWarnEnabled(Marker marker) {
245+
return true;
246+
}
247+
248+
@Override
249+
public void warn(Marker marker, String msg) {
250+
Log.w(tag, msg);
251+
}
252+
253+
@Override
254+
public void warn(Marker marker, String format, Object arg) {
255+
Log.w(tag, formatMessage(format, arg));
256+
}
257+
258+
@Override
259+
public void warn(Marker marker, String format, Object arg1, Object arg2) {
260+
Log.w(tag, formatMessage(format, arg1, arg2));
261+
}
262+
263+
@Override
264+
public void warn(Marker marker, String format, Object... arguments) {
265+
Log.w(tag, formatMessage(format, arguments));
266+
}
267+
268+
@Override
269+
public void warn(Marker marker, String msg, Throwable t) {
270+
Log.w(tag, formatThrowable(msg, t));
271+
}
272+
273+
@Override
274+
public boolean isErrorEnabled() {
275+
return true;
276+
}
277+
278+
@Override
279+
public void error(String msg) {
280+
Log.e(tag, msg);
281+
282+
}
283+
284+
@Override
285+
public void error(String format, Object arg) {
286+
Log.e(tag, formatMessage(format, arg));
287+
}
288+
289+
@Override
290+
public void error(String format, Object arg1, Object arg2) {
291+
Log.e(tag, formatMessage(format, arg1, arg2));
292+
}
293+
294+
@Override
295+
public void error(String format, Object... arguments) {
296+
Log.e(tag, formatMessage(format, arguments));
297+
}
298+
299+
@Override
300+
public void error(String msg, Throwable t) {
301+
Log.e(tag, formatThrowable(msg, t));
302+
}
303+
304+
@Override
305+
public boolean isErrorEnabled(Marker marker) {
306+
return true;
307+
}
308+
309+
@Override
310+
public void error(Marker marker, String msg) {
311+
Log.e(tag, msg);
312+
}
313+
314+
@Override
315+
public void error(Marker marker, String format, Object arg) {
316+
Log.e(tag, formatMessage(format, arg));
317+
}
318+
319+
@Override
320+
public void error(Marker marker, String format, Object arg1, Object arg2) {
321+
Log.e(tag, formatMessage(format, arg1, arg2));
322+
}
323+
324+
@Override
325+
public void error(Marker marker, String format, Object... arguments) {
326+
Log.e(tag, formatMessage(format, arguments));
327+
}
328+
329+
@Override
330+
public void error(Marker marker, String msg, Throwable t) {
331+
Log.e(tag, formatThrowable(msg, t));
332+
}
333+
334+
private String formatMessage(String format, Object... arguments) {
335+
for (Object arg : arguments) {
336+
format = format.replaceFirst("\\{\\}", arg.toString());
337+
}
338+
339+
return format;
340+
}
341+
342+
private String formatThrowable(String msg, Throwable t) {
343+
return new StringBuilder(msg).append("\n").append(t.getMessage()).toString();
344+
}
345+
}

android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import android.support.annotation.RawRes;
2929
import android.support.annotation.RequiresApi;
3030
import android.support.annotation.VisibleForTesting;
31+
import android.util.Log;
3132

3233
import com.optimizely.ab.Optimizely;
3334
import com.optimizely.ab.android.datafile_handler.DatafileHandler;
@@ -45,6 +46,7 @@
4546

4647
import org.slf4j.Logger;
4748
import org.slf4j.LoggerFactory;
49+
import org.slf4j.Marker;
4850

4951
import java.io.IOException;
5052
import java.io.InputStream;
@@ -619,11 +621,21 @@ public OptimizelyManager build(Context context) {
619621
try {
620622
logger = LoggerFactory.getLogger(OptimizelyManager.class);
621623
} catch (Exception e) {
622-
logger = LoggerFactory.getLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
624+
try {
625+
logger = LoggerFactory.getLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
626+
}
627+
catch (Exception e1) {
628+
logger = new OptimizelyLiteLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
629+
}
623630
logger.error("Unable to generate logger from class.", e);
624631
} catch (Error e) {
625-
logger = LoggerFactory.getLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
626-
logger.error("Unable to generate logger from class.", e);
632+
try {
633+
logger = LoggerFactory.getLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
634+
logger.error("Unable to generate logger from class.", e);
635+
}
636+
catch (Exception e1) {
637+
logger = new OptimizelyLiteLogger("com.optimizely.ab.android.sdk.OptimizelyManager");
638+
}
627639
}
628640
}
629641

0 commit comments

Comments
 (0)