Effortless network response logging on Android
-
Upload
simon-percic -
Category
Mobile
-
view
74 -
download
0
Transcript of Effortless network response logging on Android
![Page 1: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/1.jpg)
Effortless network response logging on Android
Simon Perčič, senior Android developer
Thursday, April 21st, 2016 @ 17:00
![Page 2: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/2.jpg)
http://square.github.io/okhttp/
Networking on Android
http://square.github.io/retrofit/
![Page 3: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/3.jpg)
Retrofit 1
![Page 4: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/4.jpg)
Retrofit 2
![Page 5: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/5.jpg)
Retrofit 2
Logging: Retrofit → OkHttp’s interceptors
![Page 6: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/6.jpg)
Retrofit 2
![Page 7: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/7.jpg)
How does the log output look like?
JSON formatter / JSON viewer
![Page 8: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/8.jpg)
OkLog
https://github.com/simonpercic/OkLog
![Page 9: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/9.jpg)
OkLog
![Page 10: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/10.jpg)
OkLog
Share url with coworkers.
(Usually REST API developers)
“OkLog is like git blame, but for network requests”
![Page 11: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/11.jpg)
How does it work?
Response string from OkHttp via application-level interceptor
gzip
Base64 encode
Create url and write string to log (w/ Timber if present)
OkLog
Get string from url param
Base64 decode
un-gzip
Return string to browser, pretty-print if JSON
ResponseEcho
![Page 12: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/12.jpg)
Ok, how do I use it?
1.
2.
3.
![Page 13: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/13.jpg)
Known limitations
- Android’s logging system: limited line length ~4k chars
- on some very long responses, 4k chars is not enough, even if gzipped
- if using Timber, url is split into multiple lines
...everything works fine for the majority of cases
![Page 14: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/14.jpg)
Non-logging approaches
Facebook’s Stetho
http://facebook.github.io/stetho/
![Page 15: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/15.jpg)
Non-logging approaches
Charles Proxy
https://www.charlesproxy.com
![Page 16: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/16.jpg)
Which one should you use?
- No silver bullet that would cover all cases
- Use side-by-side, depending on the use case you want to cover
![Page 17: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/17.jpg)
Logging in production
“every time you log in production, a puppy dies.”- Jake Wharton, Timber readme
(https://github.com/JakeWharton/timber)
http://developer.android.com/tools/publishing/preparing.html#publishing-configure
![Page 18: Effortless network response logging on Android](https://reader031.fdocuments.in/reader031/viewer/2022022413/58efbb3b1a28ab7d688b457d/html5/thumbnails/18.jpg)
Questions?
@simonpercic @simonpercicsimonpercic