文章目录

  • Log等级划分
  • Log使用规范
  • Android Studio中log使用
    • Logcat中选择筛选条件
    • Log信息颜色设置
    • Log信息说明
  • 写一份便于使用的Log辅助类

Log等级划分

Log.v("Tag","Msg");//Verbose  观察值,Verbose是冗长、啰嗦的意思,任何消息都会输出
Log.d("Tag","Msg");//Debug  调试
Log.i("Tag","Msg");//Info  信息,为一般提示性的消息
Log.w("Tag","Msg");//Warn  可能会出问题,一般用于系统提示开发者需要优化android代码等场景
Log.e("Tag","Msg");//Error  崩溃信息,一般用于输出异常和报错信息

Android Studio 中 Logcat 观察打印日志,可以筛选级别,如果选择 Verbose 可以查看所有,如果选择 Debug,Debug以上的Verbose级别不能查看,Debug和以下级别可以查看,依次类推

右侧输入框可以通过第一个参数Tag来筛选日志信息

Log使用规范

1、在app中,一般不允许使用 VERBOSE 级别的 log,对于 INFO、WARN 级别的 log,允许极少量打印重要信息。这是工作中的要求,系统源码中其实对这三个等级用得也不少,例如,系统打印一般 Exception 信息时,就是用的 WARN 级别 log

2、只有在出现极严重错误的时候,才允许使用 ERROR 级别,一般的信息要是用 DEBUG 级别(在后面讲 Log.isLoggable() 的时候,会讲到用 DEBUG 级别的好处)。当系统报 Fatal Exception 的时候,就是用的 ERROR 级别的 log

3、用户的隐私信息禁止打印,比如:IMEI、手机号、密码、银行卡号等。在国外,一些法律也对Log内容做了严格的要求

4、Log中不要打印太多具体实现的细节,这样会导致通过 log 就能猜到架构的设计和代码的实现

5、Log中不能暴露核心算法或机制细节,比如核心算法相关信息、应用和框架间函数的调用流程等

6、禁止在循环打印log。在循环条件、频繁操作、频繁调用的接口、ACTION_MOVE事件、重复打印等地方,一定要控制好 log 的使用。在单位时间内,不同性质的应用对 log 的数目有一定的要求,对每条 log 的大小也有一定的限制。因为大量或者频繁的 log,对 app 的性能有一定的影响。即便是有 log 开关控制日志的输出与否,字符串的拼接也是会耗掉一些性能和资源的

7、打印捕捉到的异常堆栈必须谨慎,如不需要打印堆栈就能定位问题,就尽量不要打印堆栈,若确实需要堆栈,在同一堆栈,尽量控制打印频度

8、对于 Android 源码中自带的 log,尽量不要修改。在Event Log中,就严禁修改源码自带的log

9、Log 中的 TAG,一般以所划分的功能模块命名,log 信息也最好用类名,方法名拼接为前缀。这样做的目的就是在查看 log 的时候,方便定位,对分析问题很有帮助

上述不仅包含使用规范,也包含了部分log使用小技巧。这些规范中有些会根据不同公司,不同严格程度而有所不同,而有些则需要统一遵守其规范的,读者可以根据具体情况斟酌。

Android Studio中log使用

Logcat中选择筛选条件


最后一项,Show only selected application表示只显示当前选中程序的日志,也就是第二项选中的app 进程
Firebase是Google 提供的一个开发者工具和基础架构平台,先不管
Nofilter相当于没有过滤器,会把所有日志显示出来
Edit Filter Configuration可以自定义过滤器,我们来试一下,点击 Edit Filter Configuration,给过滤器起名 data,让它对名为 data 的 tag 过虑

然后你会发现多了个过滤器

Log信息颜色设置

为了便于查看不同等级的 log,Android Studio 对不同等级的 log 信息设置了不同的颜色。设置路径为:File > Settings > Editor > Colors Scheme > Android Logcat。或者直接搜索 log 即可找到,如下截图所示:

我设置的色值如下

Assert #8F0005
Verbose #000000
Debug #0070BB
Info #48BB31
Warning #BBBB23
Error #FF0006

当然颜色可以自己随便设置,但是一般遵守约定俗称的规定,比如,ERROR 级别的 log,就往往被设置为红色

Log信息说明

写一份便于使用的Log辅助类

public class Logger {//设为false关闭日志private static final boolean LOG_ENABLE = true;public static void i(String tag, String msg){if (LOG_ENABLE){Log.i(tag, msg);}}public static void v(String tag, String msg){if (LOG_ENABLE){Log.v(tag, msg);}}public static void d(String tag, String msg){if (LOG_ENABLE){Log.d(tag, msg);}}public static void w(String tag, String msg){if (LOG_ENABLE){Log.w(tag, msg);}}public static void e(String tag, String msg){if (LOG_ENABLE){Log.e(tag, msg);}}}

原文

Android中日志打印 Log的使用相关推荐

  1. Android 各层中日志打印功能的应用

    Android 各层中日志打印功能的应用 1. HAL层 头文件:#include <utils/Log.h>  对应的级别 打印方法   VERBOSE LOGV() DEBUG LOG ...

  2. Android的日志工具Log

    Android的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志. Log.v() 用于打印那些最为琐碎的.意义最小的日志信息.对应级别verbose ...

  3. 在Android NDK下打印log

    在Android Studio NDK中打印log 示例 // 导入必须的android/log.h头文件 #include <android/log.h>// 可选.定义方便使用的宏 # ...

  4. 【华为云技术分享】一行代码就能写一个日志打印组件,你信吗?为你揭晓LiteOS中日志打印组件的核心

    1. 做实验引发的思考 在学习LiteOS日志打印组件使用的时候,我记录了一篇博客:atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享,关于实验的具体内容,请阅读这篇博客. ...

  5. 当当网电子书能打印吗_一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心

    1. 做实验引发的思考 在学习LiteOS日志打印组件使用的时候,我记录了一篇博客:atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享,关于实验的具体内容,请阅读这篇博客(点 ...

  6. 酷派手机(Coolpad 8297-T01)在Android开发工具如AndroidStudio、Eclipse中无法打印Log

    原因是机器在出厂时将log的级别做了限制. 解决方法是:拨号盘输入*20121220# -> 选择日志输出级别 -> 选择Java log level -> 选择LOGD即可.

  7. 独乐乐不如众乐乐,你的项目还在纠结用日志打印log么?Android开发okhttp3便捷拦截监听

    SimpleInterceptor SimpleInterceptor 是Android OkHttp客户端的的拦截接口工具,为的是方便测试或开发,快速查找问题. 环境要求 Android 4.1+ ...

  8. android 线程方式打印log到sd卡

    2019独角兽企业重金招聘Python工程师标准>>> package com.foundreams.profs_chinese.payutil; import java.text. ...

  9. PHP中的打印LOG信息方式

    <html><body>中使用:print_r和echo <?php print_r($result);?> //可以输出任何格式的信息 <?php echo ...

最新文章

  1. C++学习之路 | PTA乙级—— 1024 科学计数法 (20 分)(精简)
  2. 女孩子们,你的专业由你做主
  3. win10 电脑触摸板不能滑动_用好笔记本的触摸板(win10小技巧)
  4. 动态修改服务器配置文件,asp.net(c#)动态修改webservice的地址和端口(动态修改配置文件)...
  5. User-Item协同自回归模型的协同过滤
  6. MS17-010 补丁下载官方地址
  7. java-设置电脑音量
  8. 使用超级鹰模拟登录验证码报错的解决办法
  9. 代写python代码一般多少钱_代写代码一般多少钱(专业解读)
  10. 9.23 未来的规划 BEC
  11. C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)
  12. pdf在线翻译_如何在线翻译整篇PDF论文?
  13. 用Java玩转选择排序
  14. 小米笔记本Pro GTX 外接显示器不能使用独显 只有60HZ
  15. 施一公在2018年全国科学道德和学风建设宣讲教育报告会上的发言 (2018年10月15日,北京人民大会堂)
  16. 波士顿房价线性回归预测
  17. 解决ubuntu下vi上下左右方向键出现字母,backspace键不能删除字符
  18. 这个AI算法岗简历模板开源了...
  19. 韩国计算机研究生课程,2020年韩国大学计算机科学硕士申请条件
  20. 2021年R1快开门式压力容器操作最新解析及R1快开门式压力容器操作复审考试

热门文章

  1. Win11如何调整鼠标dpi?
  2. Word 自动更改题注章节编号格式“图一.1”为“图1.1”
  3. 2017-10-19 远光软件Java开发面试+达达京东到家笔试总结
  4. 上海理想胡忠顺:聚焦双纬度,剑指智慧化实践
  5. [http-nio-8080-exec-9] com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getPoolManager
  6. 手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播
  7. MMA-mathematica数值求解非线性偏微分方程组
  8. vibe算法的另外一种实现
  9. sougou linux 无法切换中英文,Ubuntu 16.04安装GoLand后不能切换到搜狗输入法
  10. java 累加器_Spark基础教程——累加器的使用(JAVA)