Android 如何更优雅的打Log

如何更优雅的打Log


精彩回顾

Viewpager开源库整理
时间选择器开源库整理
Menu开源库整理
动态权限库

日常开发中打log日志是我们必不可少的,那么怎么写能让你的Log更美观更好看更显眼呢,今天分享一下我封装Log的方式

方式一

Log.i("lovesosoi","Logi");
Log.d("lovesosoi","Logd");
Log.v("lovesosoi","Logv");
Log.e("lovesosoi","Loge");

方式二

public static String TAG="Lovesosoi";
Log.i(TAG,"Logi");
Log.d(TAG,"Logd");
Log.v(TAG,"Logv");
Log.e(TAG,"Loge");

方式三

将Log进行简单的封装,其实就是做一个开关,也没有加太多的功能

public class LogUtils {
    private static boolean isDebug = true;
    private static String TAG = "tag";

    public boolean isDebug() {
        return isDebug;
    }

    public static void setDebug(boolean debug) {
        isDebug = debug;
    }
    public static void setTag(String debug) {
        TAG = debug;
    }

    public static void e(String msg) {
        if (isDebug) {
            Log.e(TAG,msg);
        }
    }
    public static void e(String tag,String msg) {
        if (isDebug) {
            Log.e(tag,msg);
        }
    }
}
class Test{
    public static void main(){
        LogUtils.setDebug(true);
        LogUtils.setTag("Lovesosoi");
        LogUtils.e("heheh");
    }
}

为了追求更加便捷,好看实用的Log,我在github 上进行了搜索查找,找到了以下的Log开源库。

电脑端显示Log

名字 介绍 star 图片
logger 简介好看使用的log库 11540星
image
xLog 简单、美观、强大、可扩展的 Android 和 Java 日志库 1859星
image
KLog Android LogCat 工具类,支持行号、所在函数、点击自动跳转、Json格式自定解析打印等功能。 1725星
image
FLogger 基于双缓冲队列、多刷盘机制的超轻量级 java 日志 499星
jlog jlog是一款针对Android开发者的日志工具 478星
Android-PLog A Pure, Pretty and Powerful logging library for android 165星
LogCollector 一个收集 app 输出日志的工具 159星

手机端显示Log

名字 介绍 star 图片
Lynx 可在手机上查看 logcat 682星
image
LogcatViewer 可在手机上查看 logcat 226星
image
Console 可在手机上查看 logcat 92星
image
DebugOverlay-Android App 端,查看 Logcat 信息 80星
image

看了大神写的库,我心里就有一个疑问,我和大神的区别在哪里,我总结一下主要是两点,一是样式,大神的样式更好看,二是功能更全,我们去看一下star 最高的代码

解析Logger

为什么Logger能显示Log的代码行数,他是怎么做到的呢

调用这个方法就能获取到当前方法所在方法栈信息,我们再来看看StackTraceElement这个类

我们做一个小测试~

这样类名,方法名,行数就都获取到了。

第二个问题来了,怎么做到这么整洁的呢
源码是这么做的,拼出来的!

其他的就是格式问题了,自己动手封装一个属于自己的Log库试试吧~~

总结

所有开源库都是在 Android-ui-2019基础上修改的,我会把我遇到所有好的开源库分享出来,大家一起学习,有问题可以问我哦,我会尽我所能给大家解答的。

推荐阅读更多精彩内容