跳到主要内容

日志

概览

Rive 运行时提供日志功能,用于调试和监控运行时行为。你可以启用日志、过滤不同级别的日志,并使用自定义日志记录器。

当前运行时

新的运行时通过 RiveLog 类型支持日志记录。要启用日志记录,将 RiveLog.logger 属性设置为 RiveLog.Logger 实现。新的运行时默认不记录日志,你可以随时通过将 RiveLog.logger 设置为 RiveLog.none 来禁用日志。新的运行时附带一个默认实现,用于记录到控制台,可以通过使用 RiveLog.system(levels:) 辅助函数来设置。使用系统日志记录器时,任何不是在指定级别发出的日志将被抑制。

// 启用默认日志实现,使用 os.Logger
RiveLog.logger = RiveLog.system(levels: .default)

// 禁用日志记录(默认行为)
RiveLog.logger = RiveLog.none

级别

日志将以不同级别记录,这些级别受 OSLogType 启发。这些级别可用于进一步过滤仅记录特定级别的日志。可用的级别有:

  • Notice:重要的信息性日志
  • Debug:通常用于辅助调试
  • Trace:高度详细且可能冗长的诊断日志,包括像 advancing 这样的操作,可能每帧至少发出一条日志
  • Info:提供附加信息的日志
  • Error:发生错误时使用
  • Warning:检测到潜在问题时使用
  • Fault:发生严重错误时使用
  • Critical:发生致命错误时使用

便捷预设也可用:

  • .default.debug.warning.error.fault.critical
  • .all:所有级别(.notice.debug.trace.info.error.warning.fault.critical

自定义日志记录器

你还可以通过实现 RiveLog.Logger 协议来实现自己的自定义日志记录器。这允许你记录到任何所需的目标,如文件、网络端点或自定义控制台。

nonisolated public protocol Logger: Sendable {
nonisolated func notice(tag: Tag, _ message: @escaping () -> String)
nonisolated func debug(tag: Tag, _ message: @escaping () -> String)
nonisolated func trace(tag: Tag, _ message: @escaping () -> String)
nonisolated func info(tag: Tag, _ message: @escaping () -> String)
nonisolated func error(tag: Tag, error _: (any Error)?, _ message: @escaping () -> String)
nonisolated func warning(tag: Tag, _ message: @escaping () -> String)
nonisolated func fault(tag: Tag, _ message: @escaping () -> String)
nonisolated func critical(tag: Tag, _ message: @escaping () -> String)
}

实现自己的日志记录器后,你可以将其设置到 RiveLog.logger 属性。

RiveLog.logger = MyLogger()

旧版运行时

RiveLogger.isEnabled = true // 启用日志记录;默认为 false
RiveLogger.levels = [.debug] // 过滤日志;默认显示所有
RiveLogger.categories = [.viewModel] // 过滤类别;默认显示所有
RiveLogger.isVerbose = true // 包含详细日志;默认为 false