Android 日志库-Logger的封装及AS3.0日志无法对齐的问题

怎么引入Logger就不说了,网上一大堆,本文记录在使用中对 Logger 的封装和Android Studio 3.0以上中Logger的使用。

对Logger的封装

在使用任何第三方库的时候,如果可以都要进行一次封装以便于在以后进行替换,否则你需要在整个项目中所有用到该三方库的地方修改。

具体代码如下:

public final class LogUtils {

    /**
     * 这里使用 Logger.t()方法来设置tag,也可以在Logger初始化的时候配置全局TAG
     */
    private static final String TAG = "TAG";

    //是否可以打印:默认true
    public static final boolean IS_PRINT_LOG = true;

    /**
     * 另外一种控制是否打印日志的方式。注意导入的包是:import com.orhanobut.logger.BuildConfig
     * 该方法的优点是debug 和 relase 版本不需要手动修改日志会自动打印或者不打印,缺点是如果有多个module会导致无法打印的问题,具体解决百度
     */
//    public static final boolean IS_PRINT_LOG = BuildConfig.DEBUG;


    public static void v(String tag, String message) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).v(message);
        }
    }

    public static void v(String message) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).v(message);
        }
    }

    public static void d(String tag, Object message) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).d(message);
        }
    }

    public static void d(Object message) {
        if (IS_PRINT_LOG) {
            Logger.d(message);
        }
    }

    public static void i(String tag, String message) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).i(message);
        }
    }

    public static void i(String message) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).i(message);
        }
    }

    public static void w(String tag, String message) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).w(message);
        }
    }

    public static void w(String message) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).w(message);
        }
    }

    public static void json(String tag, String json) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).json(json);
        }
    }

    public static void json(String json) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).json(json);
        }
    }

    public static void e(String tag, String message) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).e(message);
        }
    }

    public static void e(String message) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).e(message);
        }
    }

    public static void e(Exception e, String message) {
        if (IS_PRINT_LOG) {
            Logger.e(e, message);
        }
    }

    public static void xml(String xml) {
        if (IS_PRINT_LOG) {
            Logger.t(TAG).xml(xml);
        }
    }

    public static void xml(String tag, String xml) {
        if (IS_PRINT_LOG) {
            Logger.t(tag).xml(xml);
        }
    }
}

解决在Android Studio 3.0以上的版本中Logger无法对齐的问题

在Android Studio 更新到3.0之后,发现打印出来的日志会自动换行,导致无法对齐的现象,如下图所示:

图片截取自github上面提交的问题,我的因为已经解决了,所以没有设置回去。

这里写图片描述

在Logger库的 Issues 中有解决方法,如下图所示的位置找就可以:

这里写图片描述

或者这里直接将解决方法列出来,代码如下所示:

public class LogCatStrategy implements LogStrategy {

        @Override
        public void log(int priority, String tag, String message) {
            Log.println(priority, randomKey() + tag, message);
        }

        private int last;

        private String randomKey() {
            int random = (int) (10 * Math.random());
            if (random == last) {
                random = (random + 1) % 10;
            }
            last = random;
            return String.valueOf(random);
        }
    }  


//Logger初始化的时候,将上面新建的类实例化,并设置到Logger中
 PrettyFormatStrategy strategy = PrettyFormatStrategy.newBuilder()
                .logStrategy(new LogCatStrategy())
                .tag("TAG")//(可选)这里也可以设置全局TAG
                .build();
 Logger.addLogAdapter(new AndroidLogAdapter(strategy));

 //也可以写成下面的这样,来控制日志是否打印
 Logger.addLogAdapter(new AndroidLogAdapter(strategy) {
            @Override
            public boolean isLoggable(int priority, String tag) {
                return BuildConfig.DEBUG;//(控制日志是否打印)
            }
        });

猜你喜欢

转载自blog.csdn.net/STGing/article/details/79974457