Log日志打印框架

Log日志打印框架:

主要介绍二个框架分别为:

1. Klog
2. Logger

Klog:

https://github.com/ZhaoKaiQiang/KLog

KLog目前功能:

  • 支持显示行号
  • 支持显示Log所在函数名称
  • 支持无Tag快捷打印
  • 支持在Android Studio开发IDE中,点击函数名称,跳转至Log所在位置
  • 支持JSON字符串解析打印
  • 支持XML字符串解析打印
  • 支持Log信息存储到文件
  • 依赖库非常小,只有不到10K
  • 支持无限长字符串打印,无Logcat4000字符限制
  • 支持变长参数,任意个数打印参数
  • 支持设置全局Tag
引入
dependencies {
    compile 'com.github.zhaokaiqiang.klog:library:1.6.0'
}
初始化

Log发布版关闭,开发板打开,配置:

android { 
buildTypes { 
release { 
minifyEnabled false 
buildConfigField “boolean”,”LOG_DEBUG”,”false” 

proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ 
} 
debug { 
buildConfigField “boolean”, “LOG_DEBUG”, “true” 

} 
} 
}

其中buildConfigField “boolean”,”LOG_DEBUG”,”false”
false是关闭,true为打开

在Application中
KLog.init(BuildConfig.LOG_DEBUG);

用法

  • KLog.v()
  • KLog.i()
  • KLog.w()
  • KLog.e()
  • KLog.a()
  • KLog.d()

KLog.d()

使用无参数的方法,会简单的打印”execute”,默认Tag是当前类的名称

KLog.d(String)

使用这个方法,可以正常打印,默认Tag是当前类的名称

KLog.d(Tag,String)

这个方法和我们最常用的一样

KLog.json(String)

使用这个方法可以打印JSON格式的字符串,Tag默认为当前类的名称

在这里插入图片描述

KLog.json(Tag,String)

和上面的一样,只不过Tag自己指定

在这里插入图片描述

如何设置Log的颜色

如下,需要“Save as”保存主题,然后取消“use inherited attributes”,即可设置自己想要的颜色

在这里插入图片描述

Logger*

参考:https://blog.csdn.net/pzm1993/article/details/78264994

https://github.com/orhanobut/logger

logger作为调试框架,可以支持多种格式
  • 线程的信息类、方法的信息
  • 格式化将 json、xml 输出
  • 支持字符串格式参数
  • 各种集合输出,list、map、array、set等,(只支持debug输出)
  • 支持从日志跳转到源码
引入:
implementation 'com.orhanobut:logger:2.2.0'
修改默认配置:

最新版修改配置,和旧版也是有不同,如下:

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false)      //(可选)是否显示线程信息。 默认值为true
  .methodCount(2)               // (可选)要显示的方法行数。 默认2
  .methodOffset(7)               // (可选)设置调用堆栈的函数偏移值,0的话则从打印该Log的函数开始输出堆栈信息,默认是0
  .logStrategy(customLog)  //(可选)更改要打印的日志策略。 默认LogCat
  .tag("MyTAG")                  //(可选)每个日志的全局标记。 默认PRETTY_LOGGER(如上图)
  .build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

具体配置大家可以自行去实践下。一般默认就可以了,这里说下,修改全局的TAG,和局部的TAG。

1.修改全局的TAG,在初始化的application中修改,如:

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .tag("MyTAG")
                .build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

在这里插入图片描述

public void testNormal(){
        Logger.t("hello").d("DEBUG日志");
        Logger.i("INFO日志");
    }

在这里插入图片描述

注:如果尝试用局部的方法,在application初始化时修改。当然,这是有效果的,但只能用一次,其他打印还是会用全局的,可自行测试。

初始化:
Logger.addLogAdapter(new AndroidLogAdapter());

注:如果在Application中初始化,记得修改 AndroidManifest.xml 中 application 标签属性,添加 android:name=".MyApplication" ,不然不会打印。

输出样式:
在这里插入图片描述

使用:

Logger.d(“hello”);

支持的数据类型

普通类型

 public void testNormal(){
        Logger.d("DEBUG日志");
        Logger.i("INFO日志");
        Logger.e("ERROR日志");
    }

在这里插入图片描述

Format类型

public void testFormat(){
        Logger.d("hello %s, luck number is %d", "world", 5);
    }

在这里插入图片描述

集合类型

首先看看List:

List list = new ArrayList();
list.add("hello");
list.add("world");
Logger.d(list);

在这里插入图片描述
使用该框架,可以直接支持打印,其他数据类型也一样。如果是使用系统Log打印的话,需要加toString变成string类型才可以

Log.d(TAG, list.toString());

其他的数据结构也是一样的:

public void testCollections(){
        /**
         * Map
         */
        Map map = new HashMap();
        map.put("map1","hello");
        map.put("map2","world");
        Logger.d(map);
 
        /**
         * Set
         */
        Set set = new HashSet();
        set.add("hello");
        set.add("world");
        Logger.d(set);
 
        /**
         * Array
         */
        String [] strs = {"hello", "world"};
        Logger.d(strs);
    }

在这里插入图片描述

注:打印集合的时候,特别是数组时,前面不要添加其他字符,如:Logger.d(“数组集合”+strs);这样会把整体当做一个参数,导致判断错误,不能正常输出数组类型。其次是,作者提示,打印集合时,使用DEBUG等级。

JSON数据

public void testJson(){
        String jsonDate = "{\"id\":859,\"channelnumber\":681,\"bilingual\":0,\"name\":\"beIN Sports 2 English 600K H265\",\n" +
                " \"language\":\"EN\",\n" +
                " \"videotype\":\"MPEG2\",\"audiotype\":\"MPEP1\",\"callsign\":\"beIN Sports 2 English 600K H265\",\"country\":\"cn\"};";
 
        Logger.json(jsonDate);
        Log.d(TAG, jsonDate);
    }

与系统Log的打印区别如图:
在这里插入图片描述

XML数据

public void testXml() {
        String xmlDate = "<province id=\"01\" name=\"北京\">  \n" +
                "    <city id=\"0101\" name=\"北京\">  \n" +
                "      <county id=\"010101\" name=\"北京\" weatherCode=\"101010100\"/>  \n" +
                "      <county id=\"010102\" name=\"海淀\" weatherCode=\"101010200\"/>  \n" +
                "      <county id=\"010103\" name=\"朝阳\" weatherCode=\"101010300\"/>  \n" +
                "      <county id=\"010110\" name=\"石景山\" weatherCode=\"101011000\"/>  \n" +
                "    </city>  \n" +
                "  </province>  ";
        Logger.xml(xmlDate);
        Log.d(TAG, xmlDate);
    }

在这里插入图片描述

控制打印开关

Logger.addLogAdapter(new AndroidLogAdapter() {
  @Override public boolean isLoggable(int priority, String tag) {
    return BuildConfig.DEBUG;
  }
});

保存log到文件

有时需要将log保存起来,再进一步分析,那么,logger框架支持将log日志保存在文件中,只需换一个适配器即可。

Logger.addLogAdapter(new DiskLogAdapter());

该适配器同样也可以重新配置默认的参数,但会有点不同,配置的是日期格式等。

其他

对Log信息的设置与过滤:

  • Filter:编辑默认或者自定义的标签,过滤标签以外的信息;
  • Disable:设置user soft wraps,即设置换行
  • Setting:设置log头部的信息,比如时间、线程PID、包名、TAG等开关设置

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值