日志
记录带严重级别的日志,添加属性,并从 Dashboard 控制日志采集。
日志用于记录带严重级别的纯文本消息。日志是自由格式文本,更适合作为调试时阅读的上下文,而不是用来做精确查询。你可以主动记录日志,也可以开启自动采集,直接捕获应用里已经写出的日志,而不必逐个修改调用点。
记录日志
使用 logDebug、logInfo、logWarning、logError 和 logFatal,可以按 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.exoplayer、androidx.media3.common 等子包:
measure {
logsAutoCollectPackageNames = listOf("androidx.media3")
}配置选项
通过 Adaptive Capture 控制 Dashboard 中采集哪些日志,这样无需发布新版本也能调整采集范围。
| 选项 | 默认 | 描述 |
|---|---|---|
| 自动采集日志 | 关闭 | 采集应用已经写出的日志,请参阅自动采集日志。仅限 Android。 |
| 最低日志级别 | 警告 | 要采集的最低严重级别。低于所选级别的日志会在源头被丢弃。 |
| 忽略模式 | (空) | 与日志正文匹配的正则表达式。正文命中任一模式的日志会在源头被丢弃。 |
完整列表请查看 Adaptive Capture。