Skip to content

Repository files navigation

MethodLog

前言

  • 当应用的业务逻辑比较复杂时,我们经常会因为方法的调用顺序烦恼,且Debug远远没有Log来的直观。
  • 用AspectJ实现日志的repo很多,却没有找到整体输出的。
  • 实现比较简单,但由于AspectJ的实现需要创建lib,建一个库可以方便在测试时使用。

MethodLog将所有的方法当作切面,在日志输出时进行统一过滤,并非最优解。这么做主要是为了能展示方法的调用顺序, 并且能够方便快速地使用。建议只在测试时引入。

引入

延用了Jake Wharton God Hugo 中的Plugin。由于引入库不同,稍作了修改。

buildscript {
dependencies {
classpath 'com.robog.methodlog:methodlog-plugin:1.0.1'
}
}
apply plugin: 'com.robog.methodlog'

可通过如下方式禁用:

MethodLog {
enabled false
}

使用

Runtime期间可以通过 LogConfig.get().enable()启用Log,通过 LogConfig.get().disable()停用。默认开启。

在Application中进行统一配置:

publicclassLogApplicationextendsApplication {
/** * 若不配置,默认输出所有方法log */
{
finalLogConfiglogConfig = LogConfig.get();
// 屏蔽类logConfig.mode(LogMode.BLOCK).blockClass(MainActivity.class, SecondActivity.class);
// 选择类logConfig.mode(LogMode.SELECT).selectClass(MainActivity.class, SecondActivity.class);
// 屏蔽方法logConfig.blockMethod("onCreate");
}
}

LogMode.BLOCK和LogMode.SELECT互斥,默认模式为LogMode.BLOCK,屏蔽method不受LogMode约束。 若blockMethod参数为"on",则会屏蔽所有以"on"开头的方法。

输出

日志的输出借鉴了logger

image

关于Kotlin

可参考gradle_plugin_android_aspectjx

About

一个可以查看方法调用顺序的库

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages