項目地址:https://github.com/orhanobut/logger
特地提一下牲平,這是今年更新的2.0.0版本纠拔,上一次更新還是2015年,目前最新的版本是2.1.1,那現(xiàn)在的Logger發(fā)生了怎樣的變化呢?
引入
compile 'com.orhanobut:logger:2.1.1'
改變之處
初始化
之前是初始化Logger是這樣的:
private static final String TAG = "APPLOG";
@Override
public void onCreate() {
super.onCreate();
Logger.init(TAG); //初始化需要打印log時姑隅,默認是LogLevel.FULL
// Logger.init(TAG).logLevel(LogLevel.NONE); //上線后不需要打印log時
}
而現(xiàn)在是這樣的:
private static final String TAG = "APPLOG";
@Override
public void onCreate() {
super.onCreate();
initLogger(TAG);
}
private void initLogger(String tag) {
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.tag(tag) // 全局tag
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy) {
@Override
public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
}
初始化的時候如果使用默認配置,只需要addLogAdapter就可以Logger.addLogAdapter(new AndroidLogAdapter())
倔撞,當然也可以像上面的代碼一樣,添加自定義的TAG慕趴。
配置策略
利用PrettyFormatStrategy.newBuilder還有更高級的設置痪蝇,如:
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // 是否顯示線程信息,默認 顯示
.methodCount(0) // 方法棧打印的個數(shù)冕房,默認是 2
.methodOffset(7) // 設置調(diào)用堆棧的函數(shù)偏移值躏啰,默認是 5
.logStrategy(customLog) // 設置log打印策略,默認是 LogCat
.tag("My custom tag") // 設置全局TAG耙册,默認是 PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy ));
在AndroidLogAdapter中新增isLoggable方法给僵,根據(jù)返回的boolean值來控制是否打印log,而這里用的是BuildConfig.DEBUG
详拙,即在release版本中就不打印了帝际。
for (LogAdapter adapter : logAdapters) {
if (adapter.isLoggable(priority, tag)) {
adapter.log(priority, tag, message);
}
}
保存log
當log日志是需要保存時,可以調(diào)用Logger.addLogAdapter(new DiskLogAdapter())
饶辙,利用DiskLogStrategy就可以將log日志輸出到文件中了蹲诀,同樣也可以添加自定義TAG。
FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
特性保留
- Logger.d("debug");
- Logger.e("error");
- Logger.w("warning");
- Logger.v("verbose");
- Logger.i("information");
- Logger.wtf("wtf!!!!");
支持一次性使用的tag - Logger.t("tag").d("debug");
支持打印帶參數(shù)的字符串 - Logger.d("hello %s", "world");
支持打印Collections (僅限debug logs) - Logger.d(MAP);
- Logger.d(SET);
- Logger.d(LIST);
- Logger.d(ARRAY);
支持打印JSON和XML (以debug log展示) - Logger.json(JSON_CONTENT);
- Logger.xml(XML_CONTENT);
感悟
這次的更新讓Logger結(jié)構更加清晰弃揽,功能更加豐富脯爪,佩服作者的設計思路和開發(fā)技巧,不愧是有那么多star矿微。