This package provides some utilities to capture logs of other processes. This can be useful when working with extensions using ExtensionKit.
The logs captured are the same ones visible in Console.app.
Important
This package makes use of the private framework LoggingSupport. While unlikely, OS updates might change the internals of the framework and break this package.
Capturing logs for one process:
// 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)")
}
}
Logs of multiple processes can also be captures with another initializer:
public static func logs(for processIDs: [pid_t], flags: ActivityStreamOptions) -> AsyncStream<LogMessage>
To capture logs of all processes, use the following initializer:
public static func logs(flags: ActivityStreamOptions) -> AsyncStream<LogMessage>