android日志框架Logger的详细使用(目前最新版2.1.1)

Android 开源日志库 Logger 使用教程 转载请注明出处: http://blog.csdn.net/like_program/article/details/52986553 1.Logger 是什么 在我们日常的开发中,肯定是少不了要和 Log 打交道,回想一下我们是怎么使用 Log 的:先定义一个静态常量 TAG,TAG 的值通常是当前类的类名,然后在需要打印 Log 的地方,调用 Log.d(TAG, "要打印的内容")。 阅读详情

android日志框架Logger的详细使用(目前最新版2.1.1)_M-Ellen的博客-优快云博客_android 日志框架

前言

在开发过程中,log日志是每个人多会用上的。平时在开发大项目的时候,几乎每个类多需要加log,然而在发布之前,要求全部删除,真是累。因为系统log暂时没有统一管理的方法。还有就是,特别是在调试的时候,对于线程并发或者子线程的调试,还是加log调试比较精确,用debug工具调试经常和实际不符合。那么,如果使用系统log,调试完又得找出来删除,累++。

作为程序猿,这种笨方法肯定是会鄙视的。对于这种需求,我们自己封装一个简单的工具包。当然这里介绍的是,github上很多人用log框架:logger。

相信很多人多用过,这里给还没有尝试过的人简单介绍下,使用也超级简单。

logger作为调试框架,可以支持多种格式:

  • 线程的信息
  • 类、方法的信息
  • 格式化将 json、xml 输出
  • 支持字符串格式参数
  • 各种集合输出,list、map、array、set等,(只支持debug输出)
  • 支持从日志跳转到源码
  • ......

如下图(引用原作者):

可以看出,和系统对比,它最大的亮点是优雅的输出log信息,当然同时提供很多其他信息,一目了然,更清晰!

如果你每天被log折磨的生不如死,那么让logger来拯救你吧~

作者:Orhan Obut

github:https://github.com/orhanobut/logger

目前,将近7.5k个star让他位列调试框架第二名,屈居facebook的stetho之后,8.5k个star。但这2个调试工具应用场景不用,所以简单的调试,logger是最佳选择了。这里简单介绍下stetho,它是一款提供在Chrome开发者工具上调试Android app的开源框架,可以在Chrome查看数据库,不用想以前那样把数据库导出,然后在用工具查看;配合网络框架可以直接打印查看网络请求的数据,而不需要一个一个添加打印出来,省去很多繁琐的事情。有兴趣的可以了解:

作者:FaceBook

官网地址: http://facebook.github.io/stetho/

github https://github.com/facebook/stetho

使用Logger

使用框架,是比较简单的,如果可以看英文版,可以直接到https://github.com/orhanobut/logger了解。

logger目前的最新版本是2.1.1,网上也很多人使用1.15的版本,如果使用最新版,单独修改配置文件,是有报错的。因为,最新版在初始化这块和原来有了较大的改动。

主要是初始化、和控制Log打印这2方面。这里介绍2.11的版本使用,所以想升级的也可以往下看看哦。

3步,只要3步,你就学会使用Logger,请:

1.导入依赖

compile 'com.orhanobut:logger:2.1.1'


2.初始化

Logger.addLogAdapter(new AndroidLogAdapter());

注:如果在Application中初始化,记得修改 AndroidManifest.xml 中 application 标签属性,添加 android:name=".MyApplication" ,不然不会打印。


3.使用

Logger.d("hello");

如图:

ok,恭喜你,你已经学会了,这样子就可以使用啦~真是so easy!

当然,如果还有追求,继续往下看看它的其他功能。

支持的数据类型

普通类型

 
  1. public void testNormal(){

  2. Logger.d("DEBUG日志");

  3. Logger.i("INFO日志");

  4. Logger.e("ERROR日志");

  5. }


 

Format类型

 
  1. public void testFormat(){

  2. Logger.d("hello %s, luck number is %d", "world", 5);

  3. }


集合类型

首先看看List:

 
  1. List list = new ArrayList();

  2. list.add("hello");

  3. list.add("world");

  4. Logger.d(list);

使用该框架,可以直接支持打印,其他数据类型也一样。如果是使用系统Log打印的话,需要加toString变成string类型才可以

Log.d(TAG, list.toString());

那么就可以猜测,里面肯定已经帮我们实现好了toString()方法,看源码:

首先是调用:

 
  1. @Override public void d(Object object) {

  2. log(DEBUG, null, Utils.toString(object));

  3. }

将打印对象传给了工具类Utils.toString(),然后:

 
  1. public static String toString(Object object) {

  2. if (object == null) {

  3. return "null";

  4. }

  5. if (!object.getClass().isArray()) {

  6. return object.toString();

  7. }

  8. if (object instanceof boolean[]) {

  9. return Arrays.toString((boolean[]) object);

  10. }

  11. if (object instanceof byte[]) {

  12. return Arrays.toString((byte[]) object);

  13. }

  14. if (object instanceof char[]) {

  15. return Arrays.toString((char[]) object);

  16. }

  17. if (object instanceof short[]) {

  18. return Arrays.toString((short[]) object);

  19. }

  20. if (object instanceof int[]) {

  21. return Arrays.toString((int[]) object);

  22. }

  23. if (object instanceof long[]) {

  24. return Arrays.toString((long[]) object);

  25. }

  26. if (object instanceof float[]) {

  27. return Arrays.toString((float[]) object);

  28. }

  29. if (object instanceof double[]) {

  30. return Arrays.toString((double[]) object);

  31. }

  32. if (object instanceof Object[]) {

  33. return Arrays.deepToString((Object[]) object);

  34. }

  35. return "Couldn't find a correct type for the object";

  36. }

这样就不需要我们自己调用toString(),直接可以打印了。

其他的数据结构也是一样的,看图就可以了:

 
  1. public void testCollections(){

  2. /**

  3. * Map

  4. */

  5. Map map = new HashMap();

  6. map.put("map1","hello");

  7. map.put("map2","world");

  8. Logger.d(map);

  9. /**

  10. * Set

  11. */

  12. Set set = new HashSet();

  13. set.add("hello");

  14. set.add("world");

  15. Logger.d(set);

  16. /**

  17. * Array

  18. */

  19. String [] strs = {"hello", "world"};

  20. Logger.d(strs);

  21. }



注:打印集合的时候,特别是数组时,前面不要添加其他字符,如:Logger.d("数组集合"+strs);这样会把整体当做一个参数,导致判断错误,不能正常输出数组类型。其次是,作者提示,打印集合时,使用DEBUG等级。

JSON数据

 
  1. public void testJson(){

  2. String jsonDate = "{\"id\":859,\"channelnumber\":681,\"bilingual\":0,\"name\":\"beIN Sports 2 English 600K H265\",\n" +

  3. " \"language\":\"EN\",\n" +

  4. " \"videotype\":\"MPEG2\",\"audiotype\":\"MPEP1\",\"callsign\":\"beIN Sports 2 English 600K H265\",\"country\":\"cn\"};";

  5. Logger.json(jsonDate);

  6. Log.d(TAG, jsonDate);

  7. }

与系统Log的打印区别如图:


 

XML数据

 
  1. public void testXml() {

  2. String xmlDate = "<province id=\"01\" name=\"北京\"> \n" +

  3. " <city id=\"0101\" name=\"北京\"> \n" +

  4. " <county id=\"010101\" name=\"北京\" weatherCode=\"101010100\"/> \n" +

  5. " <county id=\"010102\" name=\"海淀\" weatherCode=\"101010200\"/> \n" +

  6. " <county id=\"010103\" name=\"朝阳\" weatherCode=\"101010300\"/> \n" +

  7. " <county id=\"010110\" name=\"石景山\" weatherCode=\"101011000\"/> \n" +

  8. " </city> \n" +

  9. " </province> ";

  10. Logger.xml(xmlDate);

  11. Log.d(TAG, xmlDate);

  12. }

如图:


 

修改默认配置

最新版修改配置,和旧版也是有不同,如下:

 
  1. FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()

  2. .showThreadInfo(false) //(可选)是否显示线程信息。 默认值为true

  3. .methodCount(2) // (可选)要显示的方法行数。 默认2

  4. .methodOffset(7) // (可选)设置调用堆栈的函数偏移值,0的话则从打印该Log的函数开始输出堆栈信息,默认是0

  5. .logStrategy(customLog) //(可选)更改要打印的日志策略。 默认LogCat

  6. .tag("MyTAG") //(可选)每个日志的全局标记。 默认PRETTY_LOGGER(如上图)

  7. .build();

  8. Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

具体配置大家可以自行去实践下。一般默认就可以了,这里说下,修改全局的TAG,和局部的TAG。

1.修改全局的TAG,在初始化的application中修改,如:

 
  1. FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()

  2. .tag("MyTAG")

  3. .build();

  4. Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));


 

2.修改局部的TAG,哪里打印就在哪里修改,只对当前打印有效,如:

 
  1. public void testNormal(){

  2. Logger.t("hello").d("DEBUG日志");

  3. Logger.i("INFO日志");

  4. }

注:如果尝试用局部的方法,在application初始化时修改。当然,这是有效果的,但只能用一次,其他打印还是会用全局的,可自行测试。

控制打印开关

这个功能是最喜欢的了,当我们发布软件,或者太多的log影响性能,那么就可以关闭logger打印,在application初始化的地方:

 
  1. Logger.addLogAdapter(new AndroidLogAdapter() {

  2. @Override public boolean isLoggable(int priority, String tag) {

  3. return BuildConfig.DEBUG;

  4. }

  5. });

通过适配器控制打印,只要覆盖isLoggable()方法,返回BuildConfig.DEBUG即可。这样子,log就不再打印出来了。

注:返回值导入的包是:import com.orhanobut.logger.BuildConfig; 有时顺手导入:com.gotechcn.frameworks,那就没有效果。

保存log到文件

有时需要将log保存起来,再进一步分析,那么,logger框架支持将log日志保存在文件中,只需换一个适配器即可。

Logger.addLogAdapter(new DiskLogAdapter());

该适配器同样也可以重新配置默认的参数,但会有点不同,配置的是日期格式等。

通过打印,找到保存的路径: /storage/emulated/0

但手机里面就是没有这个文件夹,不知道什么原因,真机和模拟机多没有,知道可以留言噢,感谢!
 

工作流程原理图

logg框架的整体流程如图(作者原图):

其他

对Log信息的设置与过滤:

Filter:编辑默认或者自定义的标签,过滤标签以外的信息;

Disable:设置user soft wraps,即设置换行

Setting:设置log头部的信息,比如时间、线程PID、包名、TAG等开关设置

好了,对于Logger框架的介绍就到这里了。有时会更新,记得使用时看看GitHub升级了没有,同时在使用是否和以前兼容。对于一些其他的方法,可以直接看源码,具体是干什么用的。

--------------------- 本文来自 M-Ellen 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/pzm1993/article/details/78264994?utm_source=copy

Android优秀的日志框架Logger使用详解 简单易用:Logger提供了简洁明了的API,使得日志记录变得简单快捷。多样化的日志等级:Logger支持不同的日志等级,包括VERBOSE、DEBUG、INFO、WARN、ERROR和ASSERT,可以根据需要选择适合的日志等级。丰富的日志输出格式:Logger支持自定义日志输出格式,可以显示时间、线程信息、类名、方法名等。灵活的日志输出方式:Logger支持输出到控制台、文件、服务器等不同的日志输出方式,方便开发者进行日志的查看和分析。性能优越。 阅读详情

相关推荐

Android日志管理——Log系统分析(二)

Log.d() 最终是通过调用 write() 向 logd 守护进程的 socket(“/dev/socket/logdw”) 端写入需要打印的日志信息。接下来就是 logd 的工作过程。Android logd日志原理Android 日志系统分析(一):概述。

小旭的专栏 1768

android日志框架Logger的使用

一、Logger 是什么? 是一个简单、漂亮、功能强大的Android日志输出库(废话少说,直接进入主题) logger作为调试框架,支持以下功能: 线程的信息 类、方法的信息 格式化将 json、xml 输出 支持字符串格式参数 各种集合输出,list、map、array、set等 Logger 的 Github 主页:https://github.com/orhanobut/logger 二、Logger 的使用 1.导入依赖 在 build.gradle(Module:app)中的 depend

qq_36512159的博客 3790

Apple 网页 SRP 登录系列文章(二):网页参数提取与会话初始化

本文深入解析了Apple网页SRP登录的第一个关键环节。文章首先指出Apple登录页面采用多层安全架构,包括跨域跳转机制和动态参数生成。重点介绍了四种关键参数(ServiceKey、SCNT、FrameId、ServiceNum)的提取技术,通过正则表达式和JSON路径解析从HTML脚本和HTTP头中获取。最后详细说明了会话初始化流程,包括访问初始页面和构建认证URL。这些技术细节揭示了Apple如何通过复杂机制确保登录过程的安全性。

Sayid_Des的专栏 1129

Android高级——Logger日志系统

1是因为标签和内容后面跟着’\0’,用来区分和解析。

松仔Log的博客 2969

Windows/Linux双平台实战:QtCreator构建套件配置全攻略(含GCC/G++/GDB/CMake)

本文详细介绍了在Windows和Linux双平台下配置QtCreator构建套件的完整流程,涵盖GCC/G++、GDB和CMake等核心工具链的设置技巧。通过分步指导和实用示例,帮助开发者解决跨平台开发中的配置难题,提升Qt应用开发效率。特别针对QtCreator新手和需要在多平台切换的开发者提供了全面的配置指南。

weixin_28836507的博客 470

告别理论劝退:用动画和Tanner图轻松理解QC-LDPC的译码原理(BP算法详解)

本文通过动画和Tanner图直观解析QC-LDPC码的BP译码原理,帮助读者轻松理解802.11ac协议中的编译码过程。文章详细展示了QC-LDPC的结构之美、BP算法的动态信息流动以及LLR的视觉化解读,并对比了硬判决算法的性能差异,为开发者和研究者提供了实用的可视化工具开发建议。

weixin_30411239的博客 492

Android 常用三种日志框架[Logger、Timber、XLog]

这里主要说下XLog的用法,也是博主目前在项目中采用的日志框架,其他两种如果需要,自行研究,这里简单介绍。1、LoggerLogger是一个比较早期的日志框架,积累到现在的人气超高,拥有将近 14K 的 Star。这个库非常轻量,满打满算整个库只有 13 个类日志输出格式还是挺好看的,可以直接输出 Collection、json、xml 类型数据,但是不能自定义输出格式。日志可以保存到磁盘,但不能配置文件相关策略(文件名、备份、删除等),可以理解为,有存储文件功能,但不多。

以后会多把工作中总结的知识、问题处理思路和方法通过博客分享出来,欢迎大家关注和共同探讨! 4117

CarPlay无线连接开发实战:从蓝牙EIR查询到iAP2认证的完整代码逻辑梳理

本文详细解析了无线CarPlay连接开发的完整流程,从蓝牙EIR查询到iAP2认证的代码实现。重点介绍了蓝牙握手、WiFi Beacon帧配置、热点信息准备等关键环节的实战技巧,帮助开发者快速搭建稳定可靠的无线CarPlay连接系统。

weixin_31534091的博客 318

安卓 Logger框架的使用

本文是本人在安卓开发中使用Logger的笔记,若有误还请指正。 本文目录 1、Logger简介 2、简单使用 3、修改默认配置 4、设置标签 5、关闭日志输出 6、写日志到文本 7、注意 8、遗憾 注意事项 1、Logger简介 Logger相对系统自带log,输出格式清晰,功能更全,使用方便 作者:Orhan Obut github:https:...

Hunter2916的博客 749

从零到一:用ROS2和Gazebo搭建Franka机械臂仿真环境(避坑指南)

本文详细介绍了如何使用ROS2和Gazebo从零开始搭建Franka机械臂的仿真环境,包括环境准备、ROS2包安装、控制器配置及常见问题解决方案。特别针对关节位置控制等核心功能提供了实用代码示例和避坑指南,帮助开发者高效构建机器人算法验证平台。

weixin_29061465的博客 458

利用自己的域名和cloudflare实现邮件转发(无限邮箱注册cursor使用账号) 保姆级图文

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!发现你走远了@mzh原创作品,转载必须标注原文链接欢迎关注『发现你走远了』 专栏,持续更新中欢迎关注『发现你走远了』 专栏,持续更新中『未完待续』

MZH 413

logger android日志框架使用

1.项目背景 logger是用于android 平台下打印各种(Json,map,list)格式文本和保存到本地文件的日志框架 2.导入(当前使用2.1.1版本) android studio下,在gradle.build文件下添加, dependencies { ...

chongtu7764的博客 331

system_server_lowmem真的是内存不足吗?

Android系统中的system_server_lowmem真的表示系统的内存遇到瓶颈了吗?以及遇到这类日志该如何分析系统的内存,本文会回答这个问题。

jidapenglin28的专栏 513

三款 Android 日志框架对比「Logger、Timber、XLog」

来看看如何使用。

yan_chenglong的博客 3273

广联达Linkworks ArchiveWebService XML实体注入漏洞复现

广联达 LinkWorks /GB/LK/Document/ArchiveService/ArchiveWebService.asmx接口处存在XML实体注入漏洞,未经身份认证的攻击者可以利用此漏洞读取系统内部敏感文件,获取敏感信息,使系统处于极不安全的状态。

0xSec 2719

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android日志管理策略,logger android日志框架使用

1.项目背景logger是用于android 平台下打印各种(Json,map,list)格式文本和保存到本地文件的日志框架2.导入(当前使用2.1.1版本)android studio下,在gradle.build文件下添加,dependencies {compile 'com.orhanobut:logger:x.x.x'}eclipse 导入logger.2.1.1包3.API使用 框架结构...

weixin_35120666的博客 779

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android日志系统驱动程序Logger源代码分析

我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,取决于你编写的是Android应用程序还是系统组件。在前面的文章浅谈Android系统开发中LOG的使用中,已经简要地介绍了在Android应用程序开发中Log的使用方法,在这一篇文章中,我们将更进一步地分析Logger

老罗的Android之旅 7万+

Android强大log框架Logger使用详解

log信息是开发中最最重要的部分,那么如何更好的捕获信息呢?接下来就让我们了解一下强大的log框架–Logger。 什么是logger? 是一个简单,漂亮,强大的Android开源日志工具,代码托管在github上 项目地址 https://github.com/orhanobut/logger 亮点? 能够提供: 线程信息:log在哪个线程 类信息:log在哪个类

李彬博客专栏 4万+

Android日志库Logger安装与配置指南

Android日志库Logger安装与配置指南 【免费下载链接】logger ✔️ Simple, pretty and powerful logger for android 项目地址: https://gitcode.com/...

gitblog_01212的博客 993

android之日志库logger

项目越来越接近上线了,需要一款日志库来调试bug。 参考: https://www.jianshu.com/p/316f065cd00c 下面开始测试:

1724

Android 日志库 Logger的简单使用

本文参考自:感谢 Android 开源日志库 Logger 使用教程 这个Logger的使用极其简单,要使用Logger需要添加的依赖库如下 dependencies { compile 'com.orhanobut:logger:1.15'} 然后初始化用 Fresco.initialize(this);//初始化Fresco 我们之所以用Log

凌空之鹤 4122

安卓Log框架“Logger”使用备忘

一、项目地址 https://github.com/orhanobut/logger 二、 使用步骤 1. 添加依赖: ``` implementation 'com.orhanobut:logger:2.2.0' ``` 2. 初始化: 默认: Logger.addLogAdapter(new AndroidLogAdapter()); 自定义: FormatStrategy for...

Sqwu(qq_38900784)的博客 319

Android Logger日志框架源码解析

前言 本篇文章将解析Android开源日志框架Logger的源码,Logger的版本是2.2.0,对这个框架还不了解的朋友可以先快速学习基本使用再来阅读本文。 初始化 先看一下Logger初始化的基本操作 FormatStrategy logcatFormatStrategy = PrettyFormatStrategy.newBuilder() .tag("MyTag") .showThreadInfo(true)

PYJTLK的博客 551

Android Logger日志工具的使用

记录一下log日志的整理 ,一直都是随手打印log日志没有系统化的整理过,今天整理了一下Logger日志框架的使用 Logger日志工具的使用 1、Logger介绍 Logger是GitHub上排名非常靠前的一个框架,一个简单,漂亮,功能强大的Android日志记录工具。 它也是开源的,所以你可以直接下载源码使用,也可以在项目中对其进行依赖做些修改。 GitHub地址:https://github.com/orhanobut/logger 依赖 implementation 'com.orh.

Originality_special的博客 1337
上一篇: Retrofit
下一篇: Androidstudio3.0坑
code_dream_wq
博客等级 码龄10年 51粉丝 199原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值