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

原创 2018年04月17日 14:31:55

怎么引入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;//(控制日志是否打印)
            }
        });

Android 开源日志库 Logger 使用教程

转载请注明出处: http://blog.csdn.net/like_program/article/details/52986553 1.Logger 是什么 在我们日常的开发中,肯定是少不了要和 ...
  • like_program
  • like_program
  • 2016-10-31 20:55:23
  • 8588

Logger日志库的基本使用

LoggerLogger是一款强大的开源日志库,可以实现清晰的打印效果引包 compile 'com.orhanobut:logger:2.1.1'初始化 FormatStrate...
  • SkylakeXun
  • SkylakeXun
  • 2017-10-16 14:21:40
  • 219

我眼中最好用的Android日志记录库Logger。

logger github地址简介我刚开始学c的时候最喜欢用的就是用printf()打印信息。后来学java的时候又经常用System.out.println()这个方法。再后来学Android的时候...
  • briblue
  • briblue
  • 2016-11-01 14:39:11
  • 3413

功能强大的Android日志程序:logger

日志程序提供了 : 线程信息Thread information类信息Class information方法信息Method information漂亮打印的JSON内容Pretty-print...
  • fanenqian
  • fanenqian
  • 2016-09-30 15:25:59
  • 974

c++的日志库

本来想自己写一个的,在网上找了一个。其实日志库大概包含几个方面 缓冲区和输出的源 格式化和分级别 线程安全spdlo c++编写的日志库,下载地址:https://git...
  • cabing2005
  • cabing2005
  • 2016-10-19 11:32:55
  • 1575

开源日志库Logger的使用

日志对于开发来说是非常重要的,不管是调试数据查看、bug问题追踪定位、数据信息收集统计,日常工作运行维护等等,都大量的使用到。今天介绍著名开源日志库Logger的使用,库的地址:https://git...
  • abren32
  • abren32
  • 2016-09-08 17:18:02
  • 1847

Android日志系统第三方库------Logger

Logger GitHub的小搬运工~~~~ 为什么要使用第三方log库,和android自带的Log有什么优点? Logger不必每次输入TAG Logger打印出当前线程名,方便调试 Logg...
  • chenqianleo
  • chenqianleo
  • 2017-08-21 22:42:27
  • 683

android logger 把日志保存到本地

首先要声明权限:        Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 实现工具类LogcatFileManager,...
  • yyhjifeng
  • yyhjifeng
  • 2017-06-01 11:19:42
  • 897

GitHub的一个日志打印库LazyLogger

LazyLogger android日志打印库,可以配置打印到本地,打印格式化的日志项目地址 LazyLogger LoggerLibrary LoggerLibrary是一个为android设...
  • hn_lgc
  • hn_lgc
  • 2016-12-08 03:27:12
  • 346

Android Logger日志框架实现

一款漂亮和实用的Android日志框架一直是Android程序员喜欢的工具. 本文基于Logger日志框架,改写的poponLogger日志框架,有以下特点: 支持map,json,xml,以及数组...
  • zybieku
  • zybieku
  • 2016-12-05 17:20:58
  • 625
收藏助手
不良信息举报
您举报文章:Android 日志库-Logger的封装及AS3.0日志无法对齐的问题
举报原因:
原因补充:

(最多只允许输入30个字)