Android第三方log库——Logger
16lz
2021-01-25
Log在Android日常开发中的重要性不言而喻,出现bug后的第一件事基本都是先看log。但是在使用Android原生Log类时,通常需要先定义一个静态TAG,然后Log.d(TAG,"message");
,为了解决在项目上线时去掉log的需求,我们通常会再封装一个LogUtil类来实现这个功能,未免有些繁琐。既然有现成的轮子可以更高效、更简洁、更美观的解决log的问题,那我们何乐而不为呢。
OverView
Simple, pretty and powerful logger for android
正如Github主页https://github.com/orhanobut/logger介绍的一样,Logger的使用特别简单,相比Android原生log只多了一步初始化操作,但是Logger会让打印更下明晰,更加美观。如下:
Android Studio配置
implementation 'com.orhanobut:logger:2.2.0'
初始化
Logger需要在项目的Application中进行初始化操作,也可以根据具体需求自定义属性。
基础使用
Logger.addLogAdapter(new AndroidLogAdapter());
控制隐藏日志
Logger.addLogAdapter(new AndroidLogAdapter(){ @Override public boolean isLoggable(int priority, @Nullable String tag) { //也可以根据priority的VERBOSE、DEBUG、INFO、WARN、ERROR等不同级别 //进行过滤,只在发布版本中保留ERROR的打印等 return BuildConfig.DEBUG; //只在DEBUG模式下打印log }});
自定义属性
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder() .showThreadInfo(true) //是否打印当前线程 .methodCount(2) //方法数显示多少行,默认两行 .methodOffset(5) //隐藏方法内部调用到偏移量,默认5 .tag("Logger Demo") //自定义TAG,Logger打印会使用同一个TAG .build();Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
保存log文件
FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder() .tag("TAG") .build();Logger.addLogAdapter(new DiskLogAdapter(formatStrategy){ @Override public boolean isLoggable(int priority, @Nullable String tag) { return BuildConfig.DEBUG; }});
自动保存到log文件这个功能比较坑的是不能指定log文件路径,只能使用默认的路径
打印
d、e、w、v、i和wtf
Logger.d("Log d");Logger.e("Log e");Logger.w("Log w");Logger.v("Log v");Logger.i("Log i");Logger.wtf("Log wtf");
每种打印方法都有多个重载方法,不同重载方法的差异各位自己摸索吧,不具体说了,大同小异。
需要注意的是各种只有一个参数的打印方法中,只有Logger.d
的参数是Object其他都是String型变量。
打印Exception
try { int[] a = {1,2,3}; a[4] = 4;} catch (Exception e) { e.printStackTrace(); Logger.e(e, "message");}
为什么单独说下Exception的打印呢,一来Exception的打印方式是有点特别,再者主要是展示Logger的打印真的是既美观又直观啊。系统打印与Logger的对比如下:
打印xml和json
Logger.json(jsonStr);Logger.xml(xmlStr);
这两个方法会是json和xml数据进行格式化输入,更易于阅读。如下:
临时TAG
因为Logger使用统一的TAG,如果想要使用不同的TAG进行打印可以:
Logger.t("MyTag").d("用临时TAG打印");
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Android通过AIDL接口实现跨进程通讯
- webview的详解
- Android(安卓)逐帧动画
- Android采用SharedPreferences方式进行文件的保存与读取
- android用户界面编程技巧――如何使用Adapter