KKMonitor

日志

记录带严重级别的日志,添加属性,并从 Dashboard 控制日志采集。

日志用于记录带严重级别的纯文本消息。日志是自由格式文本,更适合作为调试时阅读的上下文,而不是用来做精确查询。你可以主动记录日志,也可以开启自动采集,直接捕获应用里已经写出的日志,而不必逐个修改调用点。

记录日志

使用 logDebuglogInfologWarninglogErrorlogFatal,可以按 debug 到 fatal 的五种严重级别记录消息。严重级别会用于 Dashboard 中的筛选和排序,所以请按消息的重要程度选择合适级别。超过 1000 个字符的正文会被截断,因此建议把最可能搜索的关键信息放在前面。

import sh.measure.android.Measure

Measure.logDebug("Cache miss for key user_42")
Measure.logInfo("User signed in")
Measure.logWarning("Payment failed, retrying")
Measure.logError("Checkout request failed")
Measure.logFatal("Unrecoverable database error")
import Measure

Measure.logDebug("Cache miss for key user_42")
Measure.logInfo("User signed in")
Measure.logWarning("Payment failed, retrying")
Measure.logError("Checkout request failed")
Measure.logFatal("Unrecoverable database error")

日志是自由格式文本。如果你记录的是之后需要搜索或绘图分析的命名行为,比如用户操作或功能使用情况,自定义事件会更容易查询。要采集带堆栈和分组信息的错误,请使用已处理错误 API,而不是手动写日志。

添加属性

给日志添加属性,可以记录稍后用于筛选的上下文,例如屏幕名称、订单 ID 或重试次数。额外上下文能帮你在成千上万条日志里找到需要的那一条。

import sh.measure.android.Measure
import sh.measure.android.attributes.AttributesBuilder

val attributes = AttributesBuilder().put("screen", "Checkout").build()
Measure.logWarning("Payment failed", attributes)
import Measure

Measure.logWarning("Payment failed", attributes: ["screen": .string("Checkout")])

允许的 key 和 value 请查看属性限制

自动采集日志

Measure 可以采集应用已经写出的日志,因此你不需要手动把每条日志都接入 SDK。此功能默认关闭。可以在 Dashboard 中开启 自动采集日志 设置,无需发布新版本即可生效。

自动采集仅适用于 Android。在 iOS 上,请桥接你自己的日志框架:转发 swift-log

Android

Measure 会在构建时 instrument android.util.Log,因此启用设置后,这些调用会流向 Measure。默认只采集应用自身包名下的日志。要采集库或其他包里的日志,请在 build.gradle.kts 中通过 logsAutoCollectPackageNames 列出包名前缀。前缀会匹配其下所有内容,因此 androidx.media3 也会覆盖 androidx.media3.exoplayerandroidx.media3.common 等子包:

measure {
    logsAutoCollectPackageNames = listOf("androidx.media3")
}

配置选项

通过 Adaptive Capture 控制 Dashboard 中采集哪些日志,这样无需发布新版本也能调整采集范围。

选项默认描述
自动采集日志关闭采集应用已经写出的日志,请参阅自动采集日志。仅限 Android。
最低日志级别警告要采集的最低严重级别。低于所选级别的日志会在源头被丢弃。
忽略模式(空)与日志正文匹配的正则表达式。正文命中任一模式的日志会在源头被丢弃。

完整列表请查看 Adaptive Capture