feat(sdk): 日志等级 logLevel 配置化(默认 .off,对外发布完全静默)

BleLog 之前所有调用都无条件 print(Debug 包),集成方没法关。新增
public enum BleLogLevel(off/error/warn/info/debug),通过
DuooomiBleConfig.logLevel 传入,DuooomiBleSDK.init 第一行写入
BleLog.level。默认 .off 保证对外集成默认静默,排查时显式开 .debug。
保留 #if DEBUG 兜底,Release 任何 level 都不输出。

frameIntervalMs 越界 warn 从 DuooomiBleConfig.init 挪到
DuooomiBleSDK.init 内、level 设置之后,避免在 level 写入前丢日志。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
km2023
2026-05-20 16:02:28 +08:00
parent ff62b50810
commit 6ed3c555df
4 changed files with 44 additions and 6 deletions

View File

@@ -21,6 +21,9 @@ public struct DuooomiBleConfig {
/// `[0, 500]` warn使 clamp
/// / 35
public let frameIntervalMs: Int
/// SDK `.off` `.warn` `.debug`
/// Release `#if DEBUG` level
public let logLevel: BleLogLevel
public init(
apiHost: URL = URL(string: "https://api.duooomi.com")!,
@@ -31,7 +34,8 @@ public struct DuooomiBleConfig {
aniHeight: Int = 360,
aniFps: String = "24",
scanNamePrefix: String,
frameIntervalMs: Int = 35
frameIntervalMs: Int = 35,
logLevel: BleLogLevel = .off
) {
self.apiHost = apiHost
self.apiKey = apiKey
@@ -41,9 +45,7 @@ public struct DuooomiBleConfig {
self.aniHeight = aniHeight
self.aniFps = aniFps
self.scanNamePrefix = scanNamePrefix
if frameIntervalMs < 0 || frameIntervalMs > 500 {
BleLog.w("frameIntervalMs=\(frameIntervalMs) out of [0,500], will clamp at use site", "Config")
}
self.frameIntervalMs = frameIntervalMs
self.logLevel = logLevel
}
}