LogStream

此软件包提供了一些实用工具来捕获其他进程的日志。当使用 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>