Android日志打印小工具

作者: XMclassmate | 来源:发表于2018-11-01 12:27 被阅读54次

背景

前段时间项目上线比较频繁,问题也挺多。算是深刻体会了清晰明了的日志对于bug排查的重要性。公司目前的项目已经经手了几位开发者,代码风格各有不同,日志比较杂乱。于是整理了一个日志工具,形成自己的日志风格,看起来自然得心应手,以后项目也用得到。感兴趣的同学可以戳这里了解下

功能介绍

支持输出日志到SD卡,打印方法调用树,打印调用线程,json/xml格式化打印,http请求过程打印。

  • 使用之前可以在Application初始化:
LogUtils.init(BuildConfig.DEBUG, getString(R.string.app_name));
  • 默认打印
LogUtils.e("我是谁,我在哪,我要干啥"); 
//设置tag为‘xxx’
LogUtils.tag("xxx").e("设置了tag是xxx");
来看下效果
  • 打印方法树
 private void md() {
        //不打印线程信息,打印方法数5
        LogUtils.methodCount(5).e("是谁在召唤我");
        LogUtils.printStack(false).e("不打印方法树");
    }
  • 打印线程信息
    默认不打印线程信息,需要LogUtils.printThread(true)来指定是否打印。
private void printThread() {
        //在子线程打印
        ThreadUtil.start(new Runnable() {
            @Override
            public void run() {
                LogUtils.printThread(true).e("我在那个线程1111");
            }
        });
        LogUtils.printThread(true).e("我在那个线程333");
        ThreadUtil.start(new Runnable() {
            @Override
            public void run() {
                LogUtils.printThread(true).e("我在那个线程222");
            }
        });
    }
  • 打印json
//打印json
LogUtils.json(Log.ERROR, gson.toJson(studentList));
  • 输出到SD卡
    需要申请SD卡读写权限
private void saveToSd() {
        //保存各类型日志到sd卡
        LogUtils.saveDebugLogToSD("debug to sd");
        LogUtils.saveErrorLogToSD("error to sd");
        LogUtils.saveWarnLogToSD("warn to sd");
        LogUtils.saveThrowableToSD(new RuntimeException());
        LogUtils.saveLogToSD("test", "log to sd");
    }
  • 打印http请求过程
LogUtils.printHttpResponseData(url, params, result, json);

使用的okhttp3的异步请求,添加了一个header,"Interface-Name"来标识接口功能,在okhttp的拦截器可以一次打印完整的请求过程,避免了同时发起多个请求时的日志错乱。okhttp日志拦截器的代码网上很多就不贴了,来看下打印效果


ok的header不支持中文,我目前是传入英文字符串再到拦截器通过枚举值来翻译,有遇到这类问题的朋友欢迎一起交流。再次贴上完整代码

相关文章

网友评论

    本文标题:Android日志打印小工具

    本文链接:https://www.haomeiwen.com/subject/mdbtxqtx.html