在Android开发中少不了和日志打交道,而在大型项目中都是分模块的,大公司基本上都是一个人负责一个模块,可能还有独立的日志模块方便调试。自然代码就开始冗余了。在小公司可能遇到的问题就是公司机器不全,无法覆盖所有机型,出现在公司内部无法复现用户反馈的bug,这时你可能去查日志系统找到用户上传的日志,如果有,ok,你也许可以搞定,如果没有呢?对于注重用户体验的公司可能你就得和用户联调了。对于和用户联调这其中诸多不便就不用说了,经历过的人都有体会。所以你需要在你认为可能出现问题的地方打日志,一般而言只是其中一个模块有问题。这时你可能需要在用户的日志信息,无论通过应用自动上传到服务器还是通过用户拷贝日志文件传给你也罢。都需要手机本地保存一份日志回传给你分析定位问题所在。或者你需要开发的时候在本地保存一份日志,这样你再何时何地都可以调试,比如在地铁上调试弱网。
这篇文章就是为了解决以上痛点。
LogUtil for android
android日志工具类
特色
- 基于系统Log日志改造,简单易用
- 支持保存本地文件日志
- 支持分模块保存日志,在大工程项目中分模块调试有优势
- 支持快捷方式打日志
使用
1.首先得在使用前初始化一次,一般在Application里面初始化
LogConfig logConfig = new LogConfig.Builder(getApplicationContext())
.setLogLevel(LogUtil.VERBOSE) //设置日志级别,当为LogUtil.ASSERT不打印日志
.setNeedSaveToDefaultFile(true)
.prefix("-prefix-")
.suffix("-suffix-")
.defaultTag("LOG")
.dirPath("/sunshy")
.addSaveRule("MainActivity", true)
.addSaveRule("Feed", true)
.addSaveRule("qqq", false)
.build();
LogUtil.init(logConfig);
2.现在就可以像系统log一样使用
LogUtil.e(TAG, "e 1");
LogUtil.e(TAG, "e 2", new Exception("e2"));
LogUtil.e("error1"); //无tag默认当前类名作为tag
LogUtil.e("error2", new Exception("error2"));
3.LogConfig 配置
setLogLevel(int logLevel) //设置日记打印级别, LogUtil.VERBOSE 打印VERBOSE级别以上所有日志
prefix(String prefix) //指定保存日志的文件前缀
suffix(String suffix) //指定保存日志的文件后缀
defaultTag(String tag) //指定保存到默认日志文件model
dirPath(String dirPath); //指定保存文件的目录,格式:"/xxx", 不设置 默认使用当前应用名作为目录
setNeedSaveToDefaultFile(boolean flag) //设置是否需要保存所有的日志到默认文件
.addSaveRule(String tag, boolean needSave) //配置保存模块规则,例如有个“PUBLISH”模块,则所有使用这个tag都会保存在同一个文件 //指定tag是否需要保存,如果需要保存,则会保存到指定模块文件,反之,则不保存,也不保存到默认日志文件
示例
72E6DD50-E182-48F9-B3E2-6DFC041646B5.png 38F475E7-49B5-4920-ACA0-9C714BC3EF1E.png安装
Gradle
compile 'com.qyl.log:library:1.1.0'
Maven
<dependency>
<groupId>com.qyl.log</groupId>
<artifactId>library</artifactId>
<version>1.1.0</version>
<type>pom</type>
</dependency>
注意
- 确保有读写文件权限
- 保证手机有sdcard
- 打release包记得关闭日志 设置LogLevel最高ASSERT不打印日志
详细介绍
https://github.com/qylshy/AndroidLogUtil/blob/master/README.md
网友评论