1、logger介绍
Logger的出现简化了我们开发过程中打印Log的繁琐,源于他的过滤,使得打印的日志更加清晰明了,增加了可读性。
功能:
- 打印线程的信息
- 打印类的信息
- 打印方法的信息
- 可以打印list、map、json、xml
- 不必每次输入TAG
- 信息过长会自动换行
- 从日志直接跳转到源码
2、logger使用
2.1 导入依赖
implementation 'com.orhanobut:logger:2.1.1'
2.2 logger初始化
Logger.addLogAdapter(new AndroidLogAdapter());
在项目的Application里面进行初始化操作,logger也支持自定义
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) //是否选择显示线程信息,默认为true
.methodCount(0) //方法数显示多少行,默认2行
.methodOffset(7) //隐藏方法内部调用到偏移量,默认5
.logStrategy(customLog) //打印日志的策略,默认LogCat
.tag("My custom tag") //自定义TAG全部标签,默认PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
最后在AndroidManifest.xml中声明application
如果是1.x版本的话,初始化方式如下:
Logger
.init("TAG") //TAG默认是PRETTYLOGGER
.methodCount(3) //方法数显示多少行,默认2行
.hideThreadInfo() // 隐藏线程信息 默认:显示
.logLevel(LogLevel.NONE) // 是否显示Log 默认:LogLevel.FULL(全部显示)
.methodOffset(2) // 默认:0
.logAdapter(new AndroidLogAdapter()); //可以自己构造适配器默认:AndroidLogAdapter
}
2.3 简单使用
Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("wtf!!!!");
2.4 隐藏日志
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
2.5 将Log日志保存到文件中
Logger.addLogAdapter(new DiskLogAdapter());
保存路径:storge/emulated/0/logger
源码实现在CsvFormatStrategy类中
String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String folder = diskPath + File.separatorChar + "logger";
如果想保存指定的TAG,增加以下实现:
FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));