此软件包提供了一些实用工具来捕获其他进程的日志。当使用 ExtensionKit 处理扩展时,这会很有用。
捕获的日志与 Console.app 中可见的日志相同。
重要提示
此软件包使用了私有框架 LoggingSupport。虽然不太可能,但操作系统更新可能会更改该框架的内部结构并破坏此软件包。
捕获一个进程的日志
// Specify the process identifier of which to capture logs.
let pid: pid_t = ...
let logStream = LogStream.logs(for: pid)
Task {
for await log in logStream {
print("\(log.process) says: \(log.message)")
}
}
也可以使用另一个初始化器捕获多个进程的日志
public static func logs(for processIDs: [pid_t], flags: ActivityStreamOptions) -> AsyncStream<LogMessage>
要捕获所有进程的日志,请使用以下初始化器
public static func logs(flags: ActivityStreamOptions) -> AsyncStream<LogMessage>