安卓 Logger框架的使用
2018-12-23 本文已影响0人
树蜂
本文是本人在安卓开发中使用Logger的笔记,若有误还请指正。
本文目录
1、Logger简介
2、简单使用
3、修改默认配置
4、设置标签
5、关闭日志输出
6、写日志到文本
7、注意
8、遗憾
注意事项
1、Logger简介
Logger相对系统自带log,输出格式清晰,功能更全,使用方便
作者:Orhan Obut
github:https://github.com/orhanobut/logger
2、简单使用
1)添加依赖
implementation 'com.orhanobut:logger:2.2.0'
2)初始化
Logger.addLogAdapter(new AndroidLogAdapter());
3)使用
Logger.d("hello");
3、修改默认配置
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) //(可选)是否显示线程信息。 默认值为true
.methodCount(2) // (可选)要显示的方法行数。 默认2
.methodOffset(7) // (可选)设置调用堆栈的函数偏移值,0的话则从打印该Log的函数开始输出堆栈信息,默认是0
.logStrategy(customLog) //(可选)更改要打印的日志策略。 默认LogCat
.tag("MyTAG") //(可选)每个日志的全局标记。 默认PRETTY_LOGGER(如上图)
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
一般使用默认配置即可
4、设置标签
1)设置全局标签,如同修改默认参数一样
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.tag("MyTAG")
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
2)设置局部标签
Logger.t("TAG").d("tag hello");
5、关闭日志输出
当 isLoggable 返回true时输出日志,否则不输出
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
可根据参数 priority、 tag 选择性的关闭打开日志
6、写日志到文本
写到日志,需要写入权限
AndroidManifest.xml申请,还要在动态申请
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
开启写入配置
CsvFormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
从CsvFormatStrategy源码中看到,设置后日志将会写到根目录logger文件夹下的文件中
String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String folder = diskPath + File.separatorChar + "logger";
当日志文件超过500K时,将新建文件
private static final int MAX_BYTES = 500 * 1024; // 500K averages to a 4000 lines per file
7、注意
如果要写到文件,同时也要在控制台中看到,需要同时添加两个适配器
CsvFormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
Logger.addLogAdapter(new AndroidLogAdapter()
{
// 是否开启打印功能,返回true则打印,否则不打印
@Override
public boolean isLoggable(int priority, String tag)
{
return BuildConfig.DEBUG;
}
});
8、遗憾
1)如果能像log4j2一样,有更多的设置就爽了
2)不经意看到一个项目,该项目似乎十分强大,涵盖了安卓开发的各种功能,有20k+个star。
其中也有关于log的使用,功能不比logger少
https://github.com/Blankj/AndroidUtilCode
https://blankj.com/2016/07/31/android-utils-code/
该作者名下还有独立的alog库
有时间研究下,也不知会不会被放凉了