阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

爆料喽!!!开源日志库Logger的使用秘籍

352次阅读
没有评论

共计 3659 个字符,预计需要花费 10 分钟才能阅读完成。

导读 日志对于开发来说是非常重要的,不管是调试数据查看、bug 问题追踪定位、数据信息收集统计,日常工作运行维护等等,都大量的使用到。今天介绍著名开源日志库 Logger 的使用,库的地址:https://github.com/orhanobut/logger

爆料喽!!!开源日志库 Logger 的使用秘籍

在 Android Studio 中的 gradle 中加入,就可以引用依赖 logger 库:
dependencies {compile 'com.orhanobut:logger:1.15'}
Logger 库能提供的功能:
  1. 线程的信息
  2. 类的信息
  3. 方法的信息
  4. 格式打印 json、xml 等
  5. 点击链接跳转到源码打印处
Logger 的使用

使用非常简单:

String userName = "Jerry";
Logger.i(userName);

打印的效果:
爆料喽!!!开源日志库 Logger 的使用秘籍

日志效果

这个效果格式是不是很清晰,可以看到,当前打印处的线程名、方法名、方法位置、打印的信息。同时点击方法的位置还可以跳转到打印的位置,这样调试起来就非常的方便了。
可以看到上图打印的 TAG 是 PRETTYLOGGER,这个是 Logger 默认的 tag,如果要修改可以:

// 修改打印的 tag 值
Logger.init("MainActivity");String userName = "Jerry";
Logger.i(userName);

爆料喽!!!开源日志库 Logger 的使用秘籍

修改 tag 的日志效果

有的小伙伴觉得,我不想一直都只用一个 tag,那岂不是要写很多的 Logger.init(tag)来修改,我们看方法名叫 init,作者的意思估计是只用一次就好了。下面可以通过:

Logger.init("MainActivity");String userName = "Jerry";
Logger.i(userName);// 给当前打印的换一个单独的 tag 名
Logger.t("App").i(userName);
Logger.e(userName);

爆料喽!!!开源日志库 Logger 的使用秘籍

 单独修改的 tag 打印效果

从图上可以看出,使用 Logger.t(tag)这个方法就修改了 tag,而且还不会影响后面其它的打印的 tag,是不是灵活又方便呢。

我们继续看,我们都知道 android 自带的 Log 日志,是无法直接打印除了字符串以为的值或变量对象的。
爆料喽!!!开源日志库 Logger 的使用秘籍

 系统自带的打印 int,报错

有的时候确实挺麻烦,还得可以拼接成字符串来打印 (宝宝(づ。◕‿‿◕。) づ心理的苦身为 Android 攻城狮都体会过),强大的 Logger 可以办到:

Logger.i("大家好,我叫 %s,今年 %d,很高兴大家来看我的文章!!!", "Jerry", 18);

爆料喽!!!开源日志库 Logger 的使用秘籍

 拼接 int 数值打印效果

学过 C 语言的应该都知道:printf(“age: %d”, 16)这样的打印函数,是不是有似曾相识的感觉。再来改改:

Logger.t("你特么才 16 岁么").i("大家好,我叫 %s,今年 %d 岁,很高兴大家来看我的文章!!!", "Jerry", 16);

爆料喽!!!开源日志库 Logger 的使用秘籍

 可怜的日志君,有种被玩坏的感觉

除了这些,Logger 还可以打印很多形式的数据,极大的方便了我们的开发:

Logger.d("hello");
Logger.e("hello");
Logger.w("hello");
Logger.v("hello");
Logger.wtf("hello");
// 打印 json 格式
String json = createJson().toString();
Logger.json(json);
// 打印 xml 格式
Logger.xml(XML_CONTENT);
// 打印自定义级别、tag、信息等格式日志
Logger.log(DEBUG, "tag", "message", throwable);
// 创建 json 数据
private JSONObject createJson() {
try {JSONObject person = new JSONObject();
      person.put("phone", "12315");
      JSONObject address = new JSONObject();
      address.put("country", "china");
      address.put("province", "fujian");
      ddress.put("city", "xiamen");
      person.put("address", address);
      person.put("married", true);
      return person;
    } 
catch (JSONException e) {Logger.e(e, "create json error occured");
             }
 return null;
                        }
                                }

爆料喽!!!开源日志库 Logger 的使用秘籍

 漂亮的 json 格式打印效果

关于打印 json,还有个小插曲,博主第一次使用的时候,半天没有出效果,没打印出来,于是我改成了 DDMS 的 Logcat,还是一样。后来去跟踪源码,看 Logger.json()是怎么打印的,源码最终是使用系统的 Log.d(tag, msg)来打印的。于是博主用打断点 debug,发现上图格式的所有字符串都有传入到 Log.d 的 msg 中,就是不打印(心累),于是我直接:

Log.d("MainActivity", "onActivityCreated: log.d 跑哪里去了...");

日志还是不显示,这就说明有可能是我的魅族 MX4 手机的问题,Google 了一下,果然有说魅族手机 Log.d()日志不打印的问题,是因为魅族默认不开启 Debug 模式的日志打印,需要在开发者选项 — 高级日志输出 — 选择全部允许(参考解决文章:http://blog.csdn.net/u013175701/article/details/51428870),至此日志打印出来了。

Logger 库还针对显示可以自己自定义:

  • Settings setting = Logger.init(“MainActivity”);
    setting.logLevel(LogLevel.FULL) 
    //  显示全部日志,LogLevel.NONE 不显示日志,默认是 Full
     .methodCount(5)         
    //  方法栈打印的个数,默认是 5
    .methodOffset(0)       
     //  设置调用堆栈的函数偏移值,0 的话则从打印该 Log 的函数开始输出堆栈信息,默认是 0
    .hideThreadInfo();      
    //  隐藏线程信息

.logAdapter(new AndroidLogAdapter()); // 自定义一个打印适配器,这里适配了 Android 的 Log 打印,你也可以自己实现 LogAdapter 接口来做一些特殊需求的日志打印适配

爆料喽!!!开源日志库 Logger 的使用秘籍

 自定义日志显示

线程显示隐藏了,方法栈显示的偏移量为 0,表示从打印的 Log 的地方开始算方法数的 5 个堆栈内的方法都打印出来。

打印数组、List、map 等对象数据
String[] names = {"Jerry", "Emily", "小五", "hongyang", "七猫"};
        Logger.d(names);  // 打印字符数组
        List<User> users = new ArrayList<>();
        for (int i = 0; i < names.length; i++) {User user = new User(names[i], 10 + i); 
                users.add(user);
                }
        Logger.d(users);  // 打印 List
        class User {
                private String name;
                private int age;
                public User(String name, int age) {
                             this.name = name;
                             this.age = age;
                             }
        public String getName() {return name;}
        public void setName(String name) {this.name = name;}
        public int getAge() {return age;} 
        public void setAge(int age) {this.age = age;} 
       // 要覆写对象的 toString 方法才可以打印出完整的日志信息
       @Override
       public String toString() {
       return "User{" +
              "name='" + name + '/'' +
              ", age=" + age +
              '}';
                                }
              }

爆料喽!!!开源日志库 Logger 的使用秘籍

 打印字符数组和 List(User 没有覆写 toString)

爆料喽!!!开源日志库 Logger 的使用秘籍

 打印字符数组和 List(User 已经覆写 toString)

至此,Logger 库的使用介绍算告一段落,还有什么好玩的,细节的使用方式,小伙伴有更好的建议的欢迎留言! 感谢您的观看!!!

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计3659字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7964843
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...