开发者选项日志级别,选哪个好

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发者选项日志级别,选哪个好相关的知识,希望对你有一定的参考价值。

参考技术A 这篇全解分为三大部分,分别为基本意义, 各设置分类、剩余设置讲解。
第一大部分:基本意义与打开方法
(懂得基本意义与开启方法的, 请直接开始看第二部分)

开发者选项,顾名思义, 就是一些用于开发的选项,但是在那个里面也有一些好用的小功能供我们使用,可以让我们更好的使用手机(`・ω・´)ゞ

注意:我仍不建议没有任何玩机经验的米粉乱使用开发者选项,如使用请认真阅读本篇教程。
默认开发者选项是隐藏状态,想开启它需要进入设置-我的设备-全部参数-连点MIUI版本。之后回到设置-更多设置就可以进入开发者选项。

帖子配图
第二大部分:类型
我会把每个设置的用途进行分类,方便大家掌握

(*^@^*)

一.玩机必用类设置
1.OEM解锁 2.设备解锁状态 3.USB调试 4.USB调试 5.无线调试 6.USB安装 7.USB调试(安全设置) 8.停用adb授权超时功能 9.指针位置 10.默认USB配置

二.实用类设置
1.显示刷新频率 2.时间悬浮窗 3.功耗检测 4.允许以多窗口模式显示不可调整大小的应用 5.演示模式 6.最小宽度 7.快捷设置开发者图块 8.enable bluetooth page scan

三.个人需求类设置
1.系统自动更新 2.启用gpu调试层 3.刘海屏 4.允许在设置上重叠显示 5.始终开启移动数据 6.显示点按操作反馈 7.窗口动画缩放

8.过渡动画缩放 9.Animator时长缩放

10.一律显示崩溃对话框 11.显示所有应用程序无响应 12.启用gpu调试层 13.强制启用4xmsaa 14.停用hw叠加层 15.直接进入系统

16.强制启用gnss测量结果全面跟踪

17.启用MIUI优化 18.高风险功能开启提醒

19.不锁定屏幕 20.图形驱动程序偏好设置 21.为WLAN热点随机生成非持久Mac地址

22.模拟颜色空间

四.开发者专用设置
1.DSU loader 2.启动视图属性检查功能

3.应用兼容性变更 4.启用WLAN详细日志记录

5.重置shortcutmanager调用频率限制

6.系统跟踪 7.显示布局边界 8.等待调试程序 9.选择调试应用 10.选择模拟位置信息应用

11.日志记录器缓冲区大小 12.系统跟踪

13.选择input日志级别 14.显示硬件层更新

15.调试gpu过度绘制 16.调试非矩形剪裁操作 17.hwui呈现模式分析 18.等待调试程序

五.无用设置
1.桌面备份密码 2.功能标记 3.显示suface更新 4.强制启用从左到右的布局方

5.模拟辅助显示设备 6.显示视图更新

六.无必要不进行更改
1.无线显示认证 2.下图所有

帖子配图
3..关闭USB音频转接 4.媒体转码设置

5.启用严格模式 6.不保留活动 7.后台进程限制 8.显示所有应用程序无响应 9.显示通知渠道警告

10.强制使用使用桌面模式

七.动不了的东西( ̄. ̄)
1.提交错误报告管理程序 2.hd音频

3.停用蓝牙a2dp硬件卸载 6.共享数据

5.已连接蓝牙音频设备的数量上限

三.全解
我会按照顺序,对所有设置进行讲解
一.杂项类
一.错误报告处理程序
不用管,你点进去也不可以更改什么呀( ̄. ̄)

二.桌面备份密码
对你的桌面备份设定密码, 没有用, 谁会碰你的 桌面备份呀(*^@^*)

三.不锁定屏幕
在你充电的时候,不会锁定屏幕, 这个就得看个 人喜好了,可以自由决定开还是不开。(*^@^*)

四.直接进入系统
一般情况下, 我们在解锁手机的时候,需要先看 到一个锁屏界面,打开此选项之后就不需要了, 但是需要没有锁屏密码,要不然不就出事了吗

→_→

五.打开蓝牙包数据日志
这个就不要碰了,是开发者抓取日志用的哦^ω^

六.OEM解锁
一个解bl锁的前置步骤,打开OEM解锁才可以解 bl锁,打开之后查找手机就无法使用了哦(๑>؂<๑)

七.WebView实现
不用碰, 点进去也改不了什么。 这个东西相当于 一个小型浏览器, 负责渲染一些软件界面的^o^

八.设备解锁状态
点进去可以看到有一个界面,能看到你的设备解 没解锁,如果你没有解锁想解锁,请打开流量, 点击下方的按钮,之后使用官方解锁工具进行解锁。⊙▽⊙

帖子配图
九.系统自动更新
打开之后就像他的名字一样, 会自动更新系统, 但是只是在你晚上不使用的时候更新,这个看个人喜好使用的哦(*¯︶¯*)

十.DSU loader
这个是开发者来测试软件用的,如果想个人使 用, 请先解bl锁之后,点进此设置,之后选择一个你要使用选项,等待通知栏上面的通知到安装完成,就可以重后了, 重启之后是一个原生系统 但是不可以日用的哦。(因为它这个只是可以用而已,并没有对手机专门优化,而且空间也很小的)>_<¦¦¦

想回到MIUI只需重启就可以了。ヾ(๑╹ヮ╹๑)ノ”

十一.演示模式
打开之后会显示固定的时间(8点16), 电量和满格的信号,可以在截图的时候使用的哦ԅ(¯ㅂ¯ԅ)

十二.快捷设置开发者图块
我们点进去可以看到有很多选项

可以选择你常用的选项,打开开关之后可以看到在你的控制中心多了你打开开关的那个磁铁

比如我打开了无线调试,在控制中心就会多出一个无线调试的开关,非常方便ヾ(๑╹ヮ╹๑)ノ”

帖子配图
二.调试类
十三.USB调试
打开此功能后,电脑就可以对手机进行调试,推 荐大家开启。 (╯°□°)╯有的时候还可以救砖哦,绝对是特别好的功能

十四.撤销USB调试授权
点击此选项后,已经配对的电脑将全部撤销授 权,各位没有特殊情况就不用使用了,毕竟还需要重新配对(* ̄m ̄)

十五.无线调试
这是安卓11新增的功能,可以在两个设置在同一 个WIFI下进行无线调试,只需要输入调试码就可 以哦。还可以使用此功能实现免电脑使用adb等 操作,十分好用,绝对用了就回不去(^_-)

十六.USB安装
打开此功能后可以使用电脑为手机安装软件了

十七.USB调试 (安全设置)
打开此功能之后, 电脑就可以对手机进行任何修改了,还是推荐开启的~(^◇^)/

十八.停用adb授权超时功能
推荐打开,要不然长时间不使用USB调试之后还需要重新进行配对,打开之后就不需要了(─‿─)

十九.选择位置模拟信息应用
开发者专用,用于模拟位置,如果有模拟位置需求的米粉们也可以使用哦٩(•̤̀ᵕ•̤́๑)

帖子配图
二十.启用视图属性检查功能
开发者专用,可以用于视图检测,我们是用不上的哦(´-ω-`)

二十一.选择调试应用
不需要更改的,也是开发者专用的(*¯︶¯*)

二十二.等待调试程序
也是开发者专用的,我们不需要使用( ̄. ̄)

二十三.验证可调试应用的字节码
就像名字一样,会对调试应用进行一个检验,来保证安全,但是有一点点耗电,大家可以自由选择开启(*¯︶¯*)

二十四.日志记录器缓冲区大小
给工程师们反馈问题的时候,可以便于工程师查看,但是有人说这玩意闭了还有其它功效,这玩意就比较玄学了,还是不建议乱动的( ̄. ̄)

二十五.选择日志级别
一般情况下我们是不用管的,这个主要是在反馈bug的时候使用,默认就可以啦,有的时候某些方面的log抓取需要更改,这个就得看情况了

(*¯︶¯*)

二十六.功能标记
啥用没有,过( ̄. ̄)

帖子配图
二十七.启用gpu调试层
可以在一定程度上增加手机的性能,在CPU繁忙 时gpu可以辅助进行运算,但是相对的手机的耗 电和发热会一定程度上的增高。

二十八.应用兼容性变更
可以对老应用的兼容性进行变更,基本上对我们没有用的^_^

二十九.显示刷新频率
打开此功能之后,在我们屏幕左上角会显示你当 前的刷新率,比如我现在的屏幕是90hz,它就会显示90哦

帖子配图
(注意,帧率和刷新率不一样哦)

三十.允许在“设置”上重叠显示
作用就和它的名字一样,允许其它应用显示在设置上面,这个就看各位的需要了,可以自由选择是否开启哦(`・ω・´)ゞ

(系统跟踪为开发者专用)

三.网络类
三十一.启用副卡sa网络(仅限5g手机)
就像它的名字一样,打开此功能之后,非上网卡也可以使用sa网络,但是也不需要打开,还会增加耗电,因为你平常也不用啊ヾ(๑╹ヮ╹๑)ノ”

三十二.无线显示认证
无需打开,开发者使用的选项( ˊ•̥▵•)੭₎₎

三十三.启用WLAN详细日志记录功能
也是方便开发者看日志的一个功能,我们是无需打开的(・ェ-)

三十四.WLAN扫描调节
打开此功能后可以一定程度上提高网络性能,默认开启,是不用关闭的哦~(^◇^)/

帖子配图
三十五.为WLAN热点随机生成非持久性Mac地址
打开此功能之后,只要有新设备连接了当前设备的热点,它的Mac地址就会改变,可以一定程度上提高安全性~

三十六.始终开启移动网络
打开此功能之后,即使我们连接到了WLAN也会继续打开移动网络,可以更快的切换网络,游戏党可以打开哦(^_-)

三十七.网络共享硬件加速
打开之后可以通过硬件处理网络流量,可以优化电池,默认打开,不需要关闭的~(^◇^)/

三十八.默认USB配置
我们点进去之后可以看到很多选项

帖子配图
可以选择你常用的选项,这样'在连接到其它设备就会自动采用了哦,不需要二次进行设置了(・ェ-)

三十九.enable bluetooth page scan
(启用蓝牙页面扫描)
默认打开,打开之后我们可以更快速的连接到其它蓝牙设备,还是不推荐关闭的~(^◇^)/

四十.启用gabeldorsche
打开之后蓝牙的信号和稳定性会有一定程度的提高,可以尝试使用~

四十一.停用蓝牙a2dp硬件卸载
这个默认开启且无法进行更改,因为关闭之后可能会无法正常连接耳机的(•̀⌓•́)シ

四十二.下图所有(放在一起讲)
帖子配图
这些设置全部使用系统默认其实就可以
第一个蓝牙avrcp版本
不需要更改,使用默认的1.5就完全可以,兼容性很好,不需要手动降低或者提高。

第二个蓝牙map版本
也是使用默认即可,不用说必须顶到头,因为你也不可能说用蓝牙传送一些大型视频之类的啊

第三个蓝牙音频编解码器
这个也不用更改,系统会自动识别你的蓝牙耳机并进行更改,你手动调成其它的耳机还不一定支持(╯°□°)╯

第四个蓝牙音频采样率
这个默认即可,如果你手动顶到头还会占用更多的系统资源,而且即使你开到头,有可能音频不支持,也是得不偿失。

第五个蓝牙音频每样本位数
也是默认即可,完全没有必要干到32位,因为现在绝大多数的设备全是16位绰绰有余。

第六个蓝牙音频声道模式
默认即可,单音道一般情况是在使用一个耳机时开启,立体声就是两个耳机时开启,系统会自动更改的。

剩下的两个解码选择自适应就可以哦,无需更改.

帖子配图
四.输入类
四十三.显示点按操作反馈
打开这个功能之后,你的手点击屏幕之后就会留下一个小白点,可以记录轨迹,各位可以看情况开启哦(*^@^*)

四十四.指针位置
打开之后就会显示你当前触摸位置的坐标,搞机友可以打开的,方便使用adb指令(*¯︶¯*)

四十五.时间悬浮窗
打开之后会在屏幕上显示一个时钟,可以精准到秒,可以打开,好用的小功能^_^¦¦¦

帖子配图
四十六.选择input日志级别
开发者记录日志使用,我们无需更改哦(*¯︶¯*)

五.绘图类
四十七.显示surface视图更新
打开之后,屏幕上有界面更新就会闪烁,不要开启,影响使用>_<¦¦¦

四十八.显示布局边界
打开之后就会显示各个组件的边界,对开发者是有用的,我们不用开启﹌○﹌

四十九.强制使用从右到左的布局方向
打开之后你的整个手机就会反转过来,还是不建议开启的,会浪费性能,而且不方便阅读( ̄. ̄)

五十.动画缩放系列设置
帖子配图
这三个设置是调节动画速度的,看个人喜好进行调整,如果喜欢快一点就可以调为0.5或者关闭,喜欢优雅一点可以调为1.5或者更高。

(注意:此功能无法调整系统桌面的过渡动画)

五十一.模拟辅助显示设备
打开后会在屏幕上显示一个和正常屏幕显示一样的小屏幕,不清楚具体作用,反正咱们是用不上的^=_=^

五十二.最小宽度
注意:调整最小宽度之前,请牢记默认配置,不要把数值调的过大或者过小,会导致设备出问题
最小宽度也是个实用的设置,数值越大,排板越小,数值越小,排板越大,显示的也就越大,可以自己自由调整哦。

五十三.刘海屏
可以选择你喜爱的配置进行调整,里面有多种刘海配置可以选择,但是其实默认就可以了

六.硬件加速渲染
五十四.显示视图更新
开启之后,只要屏幕上的东西发生变化就会闪烁屏幕,各位不要开启,要不然再闪到眼睛🌝

五十五.显示硬件层更新
硬件层在更新的时候,会显示为绿色,各位也是不用开启的。(*¯︶¯*)

五十六.下图两个
帖子配图
gpu过度绘制就是多次绘制同一个像素点,打开这个功能就会显示多次绘制的地方,1x过度绘制为蓝色、2x过度绘制为绿色、3x过度绘制为淡红色和超过4x过度绘制为红色。

调试非矩形剪裁操作,就是关闭屏幕的剪裁区域,而且剪裁区域不允许绘制其它图形,我们一般是用不上的。

五十七.允许窗口级模糊处理
默认开启,关闭之后,系统所有的高斯模糊全部去除,比如控制中心,关机界面等等等等,如果你追求流畅,可以关闭,但是视觉效果肯定差得多( ̄. ̄)

五十八.强制启用 4x msaa
是启用4倍抗锯齿模式的意思,开启后游戏画质会增加,但是手机温度和gpu压力会变大,各位可以自由选择

帖子配图
五十九.停用hw叠加层
开启之后,CPU不再辅助gpu进行渲染,全程使用gpu进行渲染,会一定程度的提高手机性能,但是会加大gpu负担,还可能会加大耗电和发热,这个看各位的喜好开启吧( ̄. ̄)

六十.模拟颜色空间
这个功能可以给有视力障碍的人士使用,可以照顾一下色盲人群,如果有这方面的需求,可以打开。

七.媒体类
六十一.关闭USB音频转接
开启此功能之后,手机将无法通过USB传输声音,比如说连接音响,音响没有声音这种,还是不建议开启的﹌○﹌

六十二.媒体转码设置
这个特别不建议大家进行乱更改,可能会影响手机正常使用的。

八.监控类
六十三.启用严格模式
打开此功能后,如果软件长时间在前台驻留,手机就会闪烁来提醒你,这个不建议开启(*¯︶¯*)

六十四.hwui呈现模式分析
这个为开发者专用选项,是对gpu各种风险模式的数据进行分析评估的意思,我们无需更改>_<¦¦¦

六十五.功耗检测
点进去之后,我感觉第一个选项是最有用的是第一个,点击start之后,就会在屏幕左上角显示刷新率,内存,温度等信息,十分好用

帖子配图
参考技术B 开发者选项的日志级别选info比较好,这个级别能记录用户的操作日志,方便排查问题。 参考技术C 开发者选项,原是预留给手机厂家工程技术人员测试机子用的。开发者选项,里面有USB调试功能,这是手机连接电脑必须开启的,还有,在手机安装软件,也是需要开启USB调试的,所以,建议让开发者选项开着。

具体步骤:

第一步:打开手机设置,找到关于手机打开。

第二步、触摸android版本7次,然后返回设置。

第三步、然后回到设置,选择其他高级设置并进入。

第四步、此时就会看见辅助功能上面的开发者选择。
参考技术D 应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J 中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

日志打印的15个好建议

前言

大家好,我是捡田螺的小男孩(公众号)。日志是快速定位问题的好帮手,是撕逼和甩锅的利器!打印好日志非常重要。今天我们来聊聊日志打印的15个好建议~

1. 选择恰当的日志级别

常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日志级别,不要反手就是打印info哈~

  • error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的

  • warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注

  • info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等等;

  • debug:用于开发DEBUG的,关键逻辑里面的运行时数据;

  • trace:最详细的信息,一般这些信息只记录到日志文件中。

2. 日志要打印出方法的入参、出参

我们并不需要打印很多很多日志,只需要打印可以快速定位问题的有效日志。有效的日志,是甩锅的利器!

哪些算得的上有效关键的日志呢?比如说,方法进来的时候,打印入参。再然后呢,在方法返回的时候,就是打印出参,返回值。入参的话,一般就是userId或者bizSeq这些关键信息。正例如下:

public String testLogMethod(Document doc, Mode mode)
   log.debug(“method enter param:”,userId);
   String id = "666";
   log.debug(“method exit param:”,id);
   return id;

3. 选择合适的日志格式

理想的日志格式,应当包括这些最基本的信息:如当前时间戳(一般毫秒精确度)、日志级别线程名字等等。在logback日志里可以这么配置:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%dHH:mm:ss.SSS %-5level [%thread][%logger0] %m%n</pattern>
    </encoder>
</appender> 

如果我们的日志格式,连当前时间都沒有记录,那连请求的时间点都不知道了

4. 遇到if...else...等条件时,每个分支首行都尽量打印日志

当你碰到if...else...或者switch这样的条件时,可以在分支的首行就打印日志,这样排查问题时,就可以通过日志,确定进入了哪个分支,代码逻辑更清晰,也更方便排查问题了。

正例:

if(user.isVip())
  log.info("该用户是会员,Id:,开始处理会员逻辑",user,getUserId());
  //会员逻辑
else
  log.info("该用户是非会员,Id:,开始处理非会员逻辑",user,getUserId())
  //非会员逻辑

5.日志级别比较低时,进行日志开关判断

对于trace/debug这些比较低的日志级别,必须进行日志级别的开关判断。

正例:

User user = new User(666L, "公众号", "捡田螺的小男孩");
if (log.isDebugEnabled()) 
    log.debug("userId is: ", user.getId());

因为当前有如下的日志代码:

logger.debug("Processing trade with id: " + id + " and symbol: " + symbol);

如果配置的日志级别是warn的话,上述日志不会打印,但是会执行字符串拼接操作,如果symbol是对象, 还会执行toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印,因此建议加日志开关判断。

6. 不能直接使用日志系统(Log4j、Logback)中的 API,而是使用日志框架SLF4J中的API。

SLF4J 是门面模式的日志框架,有利于维护和各个类的日志处理方式统一,并且可以在保证不修改代码的情况下,很方便的实现底层日志框架的更换。

正例:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(TianLuoBoy.class);

7. 建议使用参数占位,而不是用+拼接。

反例:

logger.info("Processing trade with id: " + id + " and symbol: " + symbol);

上面的例子中,使用+操作符进行字符串的拼接,有一定的性能损耗

正例如下:

logger.info("Processing trade with id:  and symbol :  ", id, symbol); 

我们使用了大括号来作为日志中的占位符,比于使用+操作符,更加优雅简洁。并且,相对于反例,使用占位符仅是替换动作,可以有效提升性能。

8. 建议使用异步的方式来输出日志。

  • 日志最终会输出到文件或者其它输出流中的,IO性能会有要求的。如果异步,就可以显著提升IO性能。

  • 除非有特殊要求,要不然建议使用异步的方式来输出日志。以logback为例吧,要配置异步很简单,使用AsyncAppender就行

<appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="ASYNC"/>
</appender>

9. 不要使用e.printStackTrace()

反例:

try
  // 业务代码处理
catch(Exception e)
  e.printStackTrace();

正例:

try
  // 业务代码处理
catch(Exception e)
  log.error("你的程序有异常啦",e);

理由:

  • e.printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,通常排查异常日志不太方便。

  • e.printStackTrace()语句产生的字符串记录的是堆栈信息,如果信息太长太多,字符串常量池所在的内存块没有空间了,即内存满了,那么,用户的请求就卡住啦~

10. 异常日志不要只打一半,要输出全部错误信息

反例1:

try 
    //业务代码处理
 catch (Exception e) 
    // 错误
    LOG.error('你的程序有异常啦');
 

  • 异常e都没有打印出来,所以压根不知道出了什么类型的异常。

反例2:

try 
    //业务代码处理
 catch (Exception e) 
    // 错误
    LOG.error('你的程序有异常啦', e.getMessage());
 
  • e.getMessage()不会记录详细的堆栈异常信息,只会记录错误基本描述信息,不利于排查问题。

正例:

try 
    //业务代码处理
 catch (Exception e) 
    // 错误
    LOG.error('你的程序有异常啦', e);
 

11. 禁止在线上环境开启 debug

禁止在线上环境开启debug,这一点非常重要。

因为一般系统的debug日志会很多,并且各种框架中也大量使用 debug的日志,线上开启debug不久可能会打满磁盘,影响业务系统的正常运行。

12.不要记录了异常,又抛出异常

反例如下:

log.error("IO exception", e);
throw new MyException(e);
  • 这样实现的话,通常会把栈信息打印两次。这是因为捕获了MyException异常的地方,还会再打印一次。

  • 这样的日志记录,或者包装后再抛出去,不要同时使用!否则你的日志看起来会让人很迷惑。

13.避免重复打印日志

避免重复打印日志,酱紫会浪费磁盘空间。如果你已经有一行日志清楚表达了意思,避免再冗余打印,反例如下:

if(user.isVip())
  log.info("该用户是会员,Id:",user,getUserId());
  //冗余,可以跟前面的日志合并一起
  log.info("开始处理会员逻辑,id:",user,getUserId());
  //会员逻辑
else
  //非会员逻辑

如果你是使用log4j日志框架,务必在log4j.xml中设置 additivity=false,因为可以避免重复打印日志

正例:

<logger name="com.taobao.dubbo.config" additivity="false"> 

14.日志文件分离

  • 我们可以把不同类型的日志分离出去,比如access.log,或者error级别error.log,都可以单独打印到一个文件里面。

  • 当然,也可以根据不同的业务模块,打印到不同的日志文件里,这样我们排查问题和做数据统计的时候,都会比较方便啦。

15. 核心功能模块,建议打印较完整的日志

  • 我们日常开发中,如果核心或者逻辑复杂的代码,建议添加详细的注释,以及较详细的日志。

  • 日志要多详细呢?脑洞一下,如果你的核心程序哪一步出错了,通过日志可以定位到,那就可以啦。

以上是关于开发者选项日志级别,选哪个好的主要内容,如果未能解决你的问题,请参考以下文章

项目部署时日志应该设置到哪个级别?

日志打印的15个好建议

日志打印的15个好建议

日志打印的15个好建议

Linux系统日志的优先级别!

monkey之monkey命令详解