播放器 SDK 支持日志记录、日志回捞和实时日志回调,便于您进行功能调试和问题排查。
自 TTSDK 1.52.1 版本起,播放器 SDK 升级了日志回捞能力。您可以根据应用所处阶段选择以下三种方案,灰度发布阶段强烈建议接入方案二,便于在收到用户反馈后获取问题发生时的日志。
适用于开发、内测阶段。您可以接入 SDK 的日志回调接口,自行将日志写入文件,并通过自有日志回捞平台收集日志。遇到疑似 SDK 问题时,将日志提供给火山引擎技术支持团队分析。
此方案需要您自行实现日志文件写入和回捞功能。
适用于灰度发布阶段。您可以通过 SDK 日志配置接口开启日志实时写入本地磁盘。收到用户反馈后,向火山引擎技术支持团队提供问题设备 ID。经您允许后,火山引擎通过自身的日志回捞平台获取并分析日志。
客户端持续写入日志可能带来一定的性能开销。为降低开销,SDK 先将日志写入内存映射文件(mmap),再异步落盘,避免频繁同步磁盘 I/O,对播放器性能的影响较小。
适用于应用全量运行阶段。收到用户反馈后,您可以向火山引擎技术支持团队提供问题设备 ID。经您允许后,火山引擎针对该设备下发配置,开启本地日志记录和回捞轮询,并通过自身的日志回捞平台获取并分析日志。
配置下发且设备使用应用后,日志记录和回捞才会生效,因此存在一定延迟,问题也可能不再复现,导致无法获取问题发生时的日志。
说明
如果需要采用服务端下发配置的方案,请勿在本地显式将日志配置的 enable 设为 NO。本地配置优先于服务端下发配置,显式关闭后,服务端下发配置也无法开启日志回捞。
以下配置说明适用于 TTSDK 1.52.1 及以上版本。您可以通过本地配置开启日志记录及回捞功能,无需等待服务端下发开启配置。
您可以在初始化 TTSDKManager 之前,创建并配置一个 TTSDKLogConfiguration 对象,然后将其赋值给 TTSDKConfiguration 的 logConfiguration 属性。
建议在 AppDelegate 或其他应用初始化早期阶段完成配置,以确保能捕获到 SDK 从启动开始的全部日志。
// 1. 初始化 TTSDK 基础配置 TTSDKConfiguration *configuration = [TTSDKConfiguration defaultConfigurationWithAppID:appId licenseName:licenseName]; // 2. 初始化日志配置 // 使用工厂方法获取一个开启日志记录及回捞功能的配置对象。 configuration.logConfiguration = [TTSDKLogConfiguration defaultLogConfigurationWithEnabled:YES]; // 3. 按需设置其他日志参数 configuration.logConfiguration.logLevel = TTSDKLogLevelDebug; // 设置日志级别 configuration.logConfiguration.maxLogSizeM = 50; // 设置总日志文件大小上限为 50MB configuration.logConfiguration.singleLogSizeM = 5; // 设置单个日志文件大小上限为 5MB // 4. 初始化 SDK [TTSDKManager startWithConfiguration:configuration];
下表详细列出了 TTSDKLogConfiguration 支持的所有配置项。
属性名 (Property) | 类型 | 必填 | 说明 | 默认值 |
|---|---|---|---|---|
enable | BOOL | 是 | 日志回捞开关。设为 | NO |
logLevel | TTSDKLogLevel | 否 | 允许记录的最低日志级别。 | TTSDKLogLevelInfo |
logPath | NSString * | 否 | 日志文件的存储路径。若为 nil,将使用默认路径: | nil |
maxLogSizeM | NSUInteger | 否 | 所有日志文件的总大小上限,单位:MB。 | 100 |
singleLogSizeM | NSUInteger | 否 | 单个日志文件的最大体积,单位:MB。 | 2 |
logExpireTimeS | NSUInteger | 否 | 日志文件的过期时间,单位:秒。过期后会自动清理。 | 604800 (7天) |
deviceID | NSString * | 否 | 自定义设备 ID,用于服务端日志捞取。无特殊需求可不设置。 | nil |
除了通过 TTSDKLogConfiguration 统一管理日志外,SDK 还支持日志回调机制。此机制适用于需要实时获取每条日志字符串并进行即时处理的特殊场景,例如,将日志流对接到您自有的实时监控系统。如果采用方案一,请在回调中接入您自己的日志文件写入和回捞逻辑。
说明
此回调机制与新的 TTSDKLogConfiguration 可以并存,互不影响。后者控制的是 SDK 内部的日志记录行为(如写文件),而前者提供了一个外部监听日志流的通道。
要使用实时日志回调,您需要:
TTSDKManager 之前,通过 setLogFlag: 设置您希望获取的日志类型。在调试阶段,建议开启全部日志。示例代码如下:
// --- 步骤 1: 设置日志级别 --- // 在调用 [TTSDKManager startWithConfiguration:...] 之前 [TTVideoEngine setLogFlag:TTVideoEngineLogFlagAll]; // --- 步骤 2: 实现并设置日志代理 --- // MyLogger.h @interface MyLogger : NSObject <TTVideoEngineLogDelegate> @end // MyLogger.m @implementation MyLogger - (void)consoleLog:(NSString *)log { // 在此回调中处理实时日志字符串 NSLog(@"[TTVideoEngine_Callback] %@", log); } @end // 在初始化 TTSDKManager 之后、开始播放之前 self.logger = [[MyLogger alloc] init]; [TTVideoEngine setLogDelegate:self.logger];