项目地址:https://github.com/orhanobut/logger
特地提一下,这是今年更新的2.0.0版本,上一次更新还是2015年,目前最新的版本是2.1.1,那现在的Logger发生了怎样的变化呢?
引入
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时
}
而现在是这样的:
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) // 方法栈打印的个数,默认是 2
.methodOffset(7) // 设置调用堆栈的函数偏移值,默认是 5
.logStrategy(customLog) // 设置log打印策略,默认是 LogCat
.tag("My custom tag") // 设置全局TAG,默认是 PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy ));
在AndroidLogAdapter中新增isLoggable方法,根据返回的boolean值来控制是否打印log,而这里用的是BuildConfig.DEBUG
,即在release版本中就不打印了。
for (LogAdapter adapter : logAdapters) {
if (adapter.isLoggable(priority, tag)) {
adapter.log(priority, tag, message);
}
}
保存log
当log日志是需要保存时,可以调用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");
支持打印带参数的字符串 - 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结构更加清晰,功能更加丰富,佩服作者的设计思路和开发技巧,不愧是有那么多star。