Timber
2015-08-20 23:49
197 查看
JakeWharton
使用,拥有Log的
定义临时tag
之前的
森林
Timber
使用方法
编译环境
只有一个400多行的类,可以单独把它复制出来放项目里,也可以通过Gradle引用compile 'com.jakewharton.timber:timber:3.1.0'
API
定义一个Log树public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); } else { Timber.plant(new CrashReportingTree()); } } }
使用,拥有Log的
d
v
i
e
w方法,但不需要传入tag
Timber.d("Activity Created");
定义临时tag
Timber.tag("MainActivity");
原理
Tree
之前的
d
v
i
e
w方法汇总
/** * {@param priority} Log.ERROR Log.WARN */ private void prepareLog(int priority, Throwable t, String message, Object... args) { // 1. 日志级别 if (!isLoggable(priority)) return; // 2. message校验处理 // 3. 获取tag String tag = getTag(); // 4. 输出日志 log(priority, tag, message, t); } // 1. 自定义优先级 protected boolean isLoggable(int priority) { return true; } // 3. 获取tag:线程内传参 private final ThreadLocal<String> explicitTag = new ThreadLocal<String>(); String getTag() { String tag = explicitTag.get(); if (tag != null) { explicitTag.remove(); } return tag; } // 实现真正的日志方法,如默认实现的DebugTree用Log,切割字符串等 protected abstract void log(int priority, String tag, String message, Throwable t);
森林
private static final List<Tree> FOREST = new CopyOnWriteArrayList<Tree>(); public static void plant(Tree tree) {...} public static void uprootAll() { FOREST.remove(tree) }
Hugo
有时候需要打印方法的传参和返回值,甚至方法的执行时间,一个个拼接很麻烦,此时只要在方法上加上@DebugLog 就可以自动实现其他
WebViewFragmentWebView使用的正确姿势
PhoneNumberUtils和
PhoneNumberFormattingTextWatcherAndroid 不为人知的API
相关文章推荐
- Oracle(+)号用法
- JQuery中Ajax的操作
- Java集合概述
- 部分真题整理2
- delphi将图片存储到sql server 2005
- python 装饰器及标准库functools中的wraps
- #310 (div.2) D. Case of Fugitive
- ARP请求重播攻击
- delphi将汉字转为首字母
- Opencv读取并播放视频
- 【bzoj1072】【SCOI2007】【排列perm】【状压dp】
- BAT职级薪酬深度分析
- hdu 1452 Happy 2004 (快速幂+取模乘法逆元)
- cocos-2dx 渲染(3)
- Leetcode: Single Number III
- delphi listview自绘图形
- 理解RESTful架构
- 如何在MFC对话框之间自定义消息传递
- Opencv图像模糊
- 西西网盘列表大全,还真是一网打尽啊!!