是否可以在设备上获取OSLog语句以进行发布构建?如果我在模拟器或设备上从Xcode启动应用程序,应用程序可以使用下面的代码读取和显示自己的日志语句。但是在设备上安装的存档构建中,什么也没有显示。我做错了什么?或者这是苹果的某种隐私限制?在其他StackOverflow问题中,我看到人们询问如何关闭发布版本的OSLog日志记录,所以听起来这些日志不会自动忽略这些版本,应该对我可用。
public static func getLogEntries(secondsAgo: TimeInterval? = nil) throws -> [OSLogEntryLog] {
let subsystem = Bundle.main.bundleIdentifier
// Open the log store.
let logStore = try OSLogStore(scope: .currentProcessIdentifier)
// Get all the logs from the last so many seconds.
let seconds: TimeInterval = (secondsAgo ?? -600) * -1
let minutesAgo = logStore.position(date: Date().addingTimeInterval(seconds))
// Fetch log objects.
let allEntries = try logStore.getEntries(at: minutesAgo)
// Filter the log to be relevant for our specific subsystem
// and remove other elements (signposts, etc).
return allEntries
.compactMap { $0 as? OSLogEntryLog }
.filter { $0.subsystem == subsystem }
}
1条答案
按热度按时间qxgroojn1#
“所以听起来这些日志不会自动忽略这些构建”
是的。它们确实存在并且被记录在中央记录设备上。您可以使用Mac上的Console应用程序访问它们。
我也应该能用
不能。应用程序无法访问iOS上的中央日志记录工具(OSLogStore)。希望有一天这会被允许,但目前还没有,苹果也没有特别暗示他们将来会改变这一点。你唯一的选择是打开一个反馈给苹果(他们将文件或忽略;没有办法知道),并希望有一天会添加。如果您需要生产日志,则需要在OSLog之外自己管理它们。