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

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

爆料喽!!!开源日志库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的使用秘籍爆料喽!!!开源日志库Logger的使用秘籍

日志效果

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

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

爆料喽!!!开源日志库Logger的使用秘籍爆料喽!!!开源日志库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的使用秘籍爆料喽!!!开源日志库Logger的使用秘籍

 单独修改的tag打印效果

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

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

 系统自带的打印int,报错

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

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

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

 拼接int数值打印效果

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

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

爆料喽!!!开源日志库Logger的使用秘籍爆料喽!!!开源日志库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的使用秘籍爆料喽!!!开源日志库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的使用秘籍爆料喽!!!开源日志库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的使用秘籍爆料喽!!!开源日志库Logger的使用秘籍

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

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

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

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

本文转载自:http://www.linuxprobe.com/open-logging-logger.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

转载于:https://www.cnblogs.com/Hdf-fight/p/5926588.html

微信小程序开发:实现地图导航功能 其中,id用于调用地图组件,latitude和longitude表示地图的中心点坐标,markers表示地图中的标记点,covers表示地图中的覆盖物,polyline表示地图中的折线图,show-location表示是否显示当前定位点,bindregionchange表示移动地图时触发的事件。其中,id表示标记点的唯一标识,latitude和longitude表示标记点的坐标,title表示标记点的名称,iconPath表示标记点的图标路径,width和height表示标记点的宽度和高度。 阅读详情

相关推荐

国产化替代落地:C#+Avalonia跨平台开发(麒麟系统适配全流程)

摘要: 随着国产化替代政策的推进,麒麟操作系统成为国产替代的重要选择。本文介绍了如何使用C#和Avalonia框架开发跨平台应用,适配麒麟系统。Avalonia支持Windows、Linux(包括麒麟)和macOS,通过XAML设计UI,便于开发者快速上手。文章详细讲解了开发环境配置、XAML控件设计、Linux特性适配及性能优化,并强调政府30%研发补贴带来的政策红利。未来,随着国产系统生态完善,C#+Avalonia将成为企业跨平台开发的高效解决方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3413

推荐一款高效、易用的开源日志库 - CuteLogger

推荐一款高效、易用的开源日志库 - CuteLogger 如果你正在寻找一个简洁且高效的日志库,那么我强烈推荐你试试。 什么是CuteLogger? CuteLogger是一个轻量级的日志库,为你的应用程序提供简单而强大的日志功能。它支持多种日志级别,并允许你自定义日志格式,以便更好地满足你的需求。 可以用来做什么? 通过使用CuteLogger,你可以轻松地在你的程序中添加日志功能,帮助你跟踪代...

gitblog_00088的博客 517

测绘程序设计——试题一:出租车轨迹数据计算

仅展示试题1的原文,如需了解其余内容,请自行购买图书李老师著作主页-http://ybli.users.sgg.whu.edu.cn/book/

chengzilhc的博客 851

开源日志库Logger使用秘籍

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

流風餘韻的专栏 1770

C/C++log日志库比较

事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。尝试了几种C/C++ log库,简单记录如下:log4j的衍生品日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是

OSKernelLAB(gatieme) 7万+

Python的logging模块和第三方模块下载与安装

日志就是在你编码的过程中记录一些代码的变化比如:记录用户什么时间登录的,用户什么时间注册的等日志的存在形式:文件类型的,MySQL中,elasticsearch搜索引擎(数据库)目的:后续可以查看错误原因,对账等"""日志的级别:后续我们写日志的时候,可以按照日志的级别选择性的记录"""# 这说明python默认的日志级别设置为WARNING日志级别等级 CRITICAL > ERROR > WARNING > INFO > DEBUG2.日志格式。

qq_65852978的博客 3339

爆料喽!!!开源日志库Logger的剖析分析

Logger类提供了多种方法来处理日志活动。上一篇介绍了开源日志库Logger使用,今天我主要来分析Logger实现的原理。

Linux运维的博客 902

爆料喽!!!开源日志库Logger的剖析分析_开源日志库怎么处理文件异常(1)

这个方法是获取本地或者全局的tag值,当localTag中有tag的时候就返回出去,并且清空localTag的值,关于ThreadLocal还不是很清楚的可以参考主席的文章:http://blog.csdn.net/singwhat…像这样的可以拼接不同格式的数据的打印日志,原来实现的方式是用String.format方法,这个想必小伙伴们在开发Android应用的时候String.xml里的动态字符占位符用的也不少,应该很容易理解这个format方法的用法。

2301_76223496的博客 866

【技术快报】9.26-10.2

导读 本期《linux就该这么学》的技术周报中,将为您推出优化LibreOffice如此简单、Multiload-ng、3D全景、开源日志库Logger使用秘籍、Docker 基础技术、安装Fedora 24后必要的设置、crontab设置工具集、Tomcat7优化配置等精彩的技术文章。 优化LibreOffice如此简单 作者导语:导读对于开源软件的支持者和粉丝来说,Libr

郑帅的博客 738

使用开源c++日志库--log4cplus

安装以及编译: 1.到官网下载安装包:https://sourceforge.net/projects/log4cplus/ 2.xz -d log4cplus-2.0.6.tar.xz 获取.tar文件后,解压:tar -xvf log4cplus-2.0.6.tar 3.进入解压后的目录 4 ./configure 表示默认lib路径是/usr/local/lib 头文件位置:/usr/local/include/log4cplus 5 make编译;make install 使用: 源文件中加入相关

dengqunw的博客 602

轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印

c语言没有现成的日志库,如果要记录日志,需要自己封装一个日志库。如果要实现日志级别区别和参数打印,还是比较麻烦的,正好在github找到了一个c语言开源日志库,可以实现日志级别打印,参数打印,而且还会记录日期和行号,最重要的是代码非常少,只有100多行,可以直接包含在我们自己的工程代码中,不需要任何依赖。

new9232的博客 1万+

loguru 日志库

loguru 日志库

yudiandian2014的专栏 447

glog日志开源使用小结

转载自:http://www.cppblog.com/pizzx/archive/2014/06/18/207320.html GLOG版本0.3.3 google开源的一个c++日志库,很小巧,使用也很方便。 1. 日志文件名格式为: basename+时间搓(年月日-HH:MM:SS.主线程ID) 要为不同级别日志文件设置不同的basename,不能相同。 google

道法自然 2097

05_c/c++开源库 spdlog日志库

c++ spdlog 日志库说明

u011326325的博客 1601

Go语言日志美化库,slog使用指南

slog 也内置了 JSON 格式的 Formatter。若不特别指定,默认都是使用 TextFormatter 格式化日志记录。slog是Go 实现的一个易于使用的,易扩展、可配置的日志库。slog 使用非常简单,无需任何配置即可使用

大河之犬的博客 1988

本科生毕业设计——文档管理系统

包括: 1.毕设论文一篇(大概2万字左右,格式完全正确,本人2010自己亲自动手制作) 2.提供开题报告 3.提供任务书 4.源程序不提供我在CSDN上发表我的毕设论文的目的不是为了得到多少多少的资源分,我觉得自己辛辛苦苦做的东西没有得到应有的尊重,我感到十分的沮丧,虽然答辩也顺利通过,但是,分数真的很低,在即将离开学校之际,我把自己历时2个月的东西献出来,希望对2011的毕业生有个帮助。论文的质量我认为属于中上水平,我自己也是一个严谨的人,我的论文比网上随意down下来的,质量还是好上不少。 最后,希望各位前辈批评指正,各位学弟学妹能有所收获。

JEDEC JESD22-B117B:2014 Solder Ball Shear - 完整英文电子版(19页).zip

JEDEC JESD22-B117B:2014 Solder Ball Shear - 完整英文电子版(19页).zip

上一篇: 2016 GitHub章鱼猫观察报告之开源统计
下一篇: 教你如何在Kali Linux 环境下设置蜜罐?
admin668899
博客等级 码龄12年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值