【发布时间】:2022-01-11 19:22:53
【问题描述】:
我需要使用 Log 类记录 Android 应用程序的重要内容。我主要使用调试、信息和错误类型。我的问题是一些日志经常打印到 Logcat,例如GPS状态,手机的监听空闲空间等。对于应用程序来说,一些更新之间的这个差距是至关重要的,不能改变,但我不需要Logcat中那么多重复的行。
我的目标是:
- 如果是某条消息的第一次,请按原样打印
- 如果消息恰好出现较早,请检查定义的时间间隔是否已经过去,如果没有忽略日志
我创建了 LogData 类:
data class LogData(
val message: String,
val type: LogType
)
类型是:
enum class LogType {
DEBUG,
INFO,
ERR
}
我想知道是否可以为此使用 RxJava 和一些节流运算符,但我不知道如何准确地考虑相同的消息并忽略它:
log.throttleFirst(GAP_IN_MS, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { (message, type) ->
when(type) {
LogType.DEBUG -> debugMessage(message)
LogType.INFO -> infoMessage(message)
LogType.ERR -> errorMessage(message)
}
}
在哪里private val log = BehaviorSubject.create<LogData>()
【问题讨论】:
-
有趣的问题,虽然我不确定在应用程序日志记录中构建逻辑是一个多么好的想法,但也许你真的需要这样做
-
@a_local_nobody 我从例如12 小时的工作来调查一些问题,这真的很烦人,我需要查看大量重复的消息,但我仍然需要他们看看是否一切正常。
标签: android kotlin logging rx-java