美文网首页
Android第三方log库——Logger

Android第三方log库——Logger

作者: 钟小明_ | 来源:发表于2019-04-02 19:45 被阅读0次

    Log在Android日常开发中的重要性不言而喻,出现bug后的第一件事基本都是先看log。但是在使用Android原生Log类时,通常需要先定义一个静态TAG,然后Log.d(TAG,"message");,为了解决在项目上线时去掉log的需求,我们通常会再封装一个LogUtil类来实现这个功能,未免有些繁琐。既然有现成的轮子可以更高效、更简洁、更美观的解决log的问题,那我们何乐而不为呢。

    OverView

    Simple, pretty and powerful logger for android

    正如Github主页https://github.com/orhanobut/logger介绍的一样,Logger的使用特别简单,相比Android原生log只多了一步初始化操作,但是Logger会让打印更下明晰,更加美观。如下:

    image

    Android Studio配置

    implementation 'com.orhanobut:logger:2.2.0'
    

    初始化

    Logger需要在项目的Application中进行初始化操作,也可以根据具体需求自定义属性。

    基础使用

    Logger.addLogAdapter(new AndroidLogAdapter());
    

    控制隐藏日志

    Logger.addLogAdapter(new AndroidLogAdapter(){
        @Override
        public boolean isLoggable(int priority, @Nullable String tag) {
            //也可以根据priority的VERBOSE、DEBUG、INFO、WARN、ERROR等不同级别
            //进行过滤,只在发布版本中保留ERROR的打印等
            return BuildConfig.DEBUG;   //只在DEBUG模式下打印log
        }
    });
    

    自定义属性

    FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
            .showThreadInfo(true)                   //是否打印当前线程
            .methodCount(2)                         //方法数显示多少行,默认两行
            .methodOffset(5)                        //隐藏方法内部调用到偏移量,默认5
            .tag("Logger Demo")                     //自定义TAG,Logger打印会使用同一个TAG
            .build();
    Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
    

    保存log文件

    FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
            .tag("TAG")
            .build();
    Logger.addLogAdapter(new DiskLogAdapter(formatStrategy){
        @Override
        public boolean isLoggable(int priority, @Nullable String tag) {
            return BuildConfig.DEBUG;
        }
    });
    

    自动保存到log文件这个功能比较坑的是不能指定log文件路径,只能使用默认的路径


    image

    打印

    d、e、w、v、i和wtf

    Logger.d("Log d");
    Logger.e("Log e");
    Logger.w("Log w");
    Logger.v("Log v");
    Logger.i("Log i");
    Logger.wtf("Log wtf");
    

    每种打印方法都有多个重载方法,不同重载方法的差异各位自己摸索吧,不具体说了,大同小异。
    需要注意的是各种只有一个参数的打印方法中,只有Logger.d的参数是Object其他都是String型变量。

    打印Exception

    try {
        int[] a = {1,2,3};
        a[4] = 4;
    } catch (Exception e) {
        e.printStackTrace();
        Logger.e(e, "message");
    }
    

    为什么单独说下Exception的打印呢,一来Exception的打印方式是有点特别,再者主要是展示Logger的打印真的是既美观又直观啊。系统打印与Logger的对比如下:

    image

    打印xml和json

    Logger.json(jsonStr);
    Logger.xml(xmlStr);
    

    这两个方法会是json和xml数据进行格式化输入,更易于阅读。如下:

    image

    临时TAG

    因为Logger使用统一的TAG,如果想要使用不同的TAG进行打印可以:

    Logger.t("MyTag").d("用临时TAG打印");
    

    相关文章

      网友评论

          本文标题:Android第三方log库——Logger

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