一个轻量级、可插拔、适用于 SDK 开发的日志收集工具。
- ✅ 自动打印 SDK 中关键流程日志,例如鉴权、支付等
- ✅ 支持 SDK 开发者自定义 code/msg 类/枚举
- ✅ 不需要依赖 log.d()/print(),自动入手日志
- ✅ 支持接口方法代理,类的方法调用全进日志
- ✅ 全量级日志写入到 SDK 包名相关目录
Kotlin DSL(settings.gradle.kts)
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven(url = "https://jitpack.io")
}
}
dependencies {
implementation("com.github.kairowan:SDK-Logify:0.1.0")
}
Logger.init(
context = appContext,
codeResolver = { (it as? MyCodeEnum)?.code.toString() },
msgResolver = { (it as? MyMsgEnum)?.message ?: "unknown" }
)Logger.autoReport(
code = MyCodeEnum.INVALID_TOKEN,
msg = MyMsgEnum.EXPIRED,
data = mapOf("token" to "abc123"),
level = LogLevel.ERROR
)interface SdkCallback<T> {
fun onSuccess(data: T)
fun onError(code: Any, msg: Any)
}val wrapped = LoggedCallback(
origin = originalCallback,
onSuccessLog = { data -> "SUCCESS" to "操作成功: $data" },
onErrorLog = { code, msg -> code to msg }
)
wrapped.onSuccess("user_abc")
wrapped.onError(401, "token 失效")interface PaymentService {
fun pay(amount: Int)
fun refund(orderId: String)
}
val service = LogProxy.wrap(RealPaymentService())
service.pay(100)运行效果:
[2025-07-28 14:33:01][DEBUG][PaymentService][METHOD_CALL] Call: pay(100)
所有日志会写入自定义目录:
<app>/files/sdk_logs/sdk_log.txt
包括时间、级别、条目、code、msg、附带数据
- 将
code/“msg” 数据实现为 enum - 在 SDK init 时候传入
Logger.init() - 通过
LogProxy.wrap对接口进行断言日志跟踪

