一款基于 log4j 处理Android平台的 log 注解框架。
- 在主工程的
build.gradle添加
buildscript {
repositories {
maven { url 'http://nexus.yipiaoyun.com/repository/android/' }
}
dependencies {
classpath 'com.cpacm:logger-gradle-plugin:1.0.0'
//...
}
}- 在需要log注解处理的项目或者子模块中添加
apply plugin: 'com.cpacm.log' dependencies { //... implementation 'com.cpacm:logger:1.0.0' }
在 application 中进行log的注册
SimpleLogger.init(SimpleLoggerConfig(this))
fun d(key: String, content: String, throwable: Throwable? = null, specialName: String? = null)
@CLog 是应用于类上的注解,作用是为类里面的所有方法都加上 logger
@CLog public class Test { public void doSomeThing(String var1){ } } //编译后将会变成 @CLog public class Test { public void doSomeThing(String var1){ SimpleLogger.logger("DEBUG", "test", "<doSomeThing>:(" + var1 + ")", true, ""); } }
@MLog 是应用于方法上的注解,作用是方法加上 logger 输出。MLog的logger输出将会覆盖CLog的输出
public class Test { @MLog(key = "test", level = LoggerLevel.ERROR) public void doSomeThing(String var1){ } } //编译后将会变成 public class Test { @MLog(key = "test", level = LoggerLevel.ERROR) public void doSomeThing(String var1){ SimpleLogger.logger("ERROR", "test", "<doSomeThing>:(" + var1 + ")", true, ""); } }
@TLog 是应用于方法上的注解,用来统计该方法的运行时间
public class Test { @TLog public long getTime(int k) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return 0L; } } //编译后将会变成 public class Test { @TLog public long getTime(int k) { long var10998 = System.currentTimeMillis(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } var10999 = System.currentTimeMillis() - var10998; SimpleLogger.logger("DEBUG", "Test", "<getTime>:cost mills--" + var10999, true, ""); return 0L; } }
@NoLog 是应用于方法上的注解,被注解的方法中将不会生成任何注解
@LifeLog 是应用于类上的注解,与@LifeLogStart和@LifeLogEnd一起使用,作用是控制类里面的方法的 logger 输出区间
@LifeLog(key = "lifecycle") class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } @LifeLogStart override fun onStart() { super.onStart() } override fun onResume() { super.onResume() } override fun onPause() { super.onPause() } @LifeLogEnd override fun onStop() { super.onStop() } override fun onDestroy() { super.onDestroy() } }
输出结果为
D/lifecycle: Lifecycle Start at <onStart>:() D/lifecycle: Lifecycle Running at <onResume>:() D/lifecycle: Lifecycle Running at <onPause>:() D/lifecycle: Lifecycle End at <onStop>:()
SimpleLoggerConfig中各参数分别代表为
| 参数名 | 作用 |
|---|---|
| debugEnv: Boolean | true:表示为调试环境,所有log都可以输出;false: 默认log除去 error 级别外,所有log都无法输出,额外log例外 |
| level: LoggerLevel | 默认输出等级,一共分为VERBOSE,DEBUG,INFO,WARN 和 ERROR |
| filePath:String | log4j 文件输出地址,默认为应用内部文件地址 |
注解以及代码中的各个参数分别代表为:
| 参数名 | 作用 |
|---|---|
| level | log输出等级 |
| key | 关键字,默认为类名 |
| content | 输出内容,方法注解上的参数。默认为方法名和参数的组合 |
| debug | 是否只在debug环境中显示,默认为true. false表示在正式环境中也会输出日志 |
| special | 是否保存至额外文件,针对 log4j |
在gradle中可以配置各个log注解的默认输出文字
loggerConfig {
enableLibrary false
defaultContent {
clogKey "cpacm"
mlogContent "这些是参数:{params}"
tlogContent "<{methodName}>:花费时间为 {time}"
}
}| 参数名 | 作用对象 |
|---|---|
| clogKey | CLog 的默认关键字 |
| clogContent | CLog 的默认输出文字 |
| clogLevel | CLog 的默认输出等级 |
| mlogKey | MLog 的默认关键字 |
| mlogContent | MLog 的默认输出文字 |
| mlogLevel | MLog 的默认输出等级 |
| lifeLogKey | LifeLog 的默认关键字 |
| lifeStartContent | LifeLogStart 的默认输出文字 |
| lifeRunningContent | LifeLog 的默认输出文字 |
| lifeEndContent | LifeLogEnd 的默认输出文字 |
| lifeLevel | LifeLog 的默认输出等级 |
| tlogKey | TLog 的默认关键字 |
| tlogContent | TLog 的默认输出文字 |
| tlogLevel | TLog 的默认输出等级 |
可变参数如下表所示
| 可变参数 | 作用 |
|---|---|
| {className} | 可替换当前类名 |
| {methodName} | 可替换当前方法名,ps:类上的注释为空 |
| {params} | 填入方法上的参数值,ps:只针对方法上的注释 |
| {time} | 替换耗时时间,ps:只针对 TLog |
(削除) 增量编译 (削除ここまで)已完成(削除) 添加插件的自定义参数,用来配置各个log注解的默认输出文字 (削除ここまで)已完成- 添加GLog,作用为 根据配置的方法名对所有类进行匹配,并添加输出日志