swift 在设备上获取OSLog Logger语句以进行存档构建

xt0899hw  于 2023-10-15  发布在  Swift
关注(0)|答案(1)|浏览(178)

是否可以在设备上获取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 }
    }
qxgroojn

qxgroojn1#

“所以听起来这些日志不会自动忽略这些构建”
是的。它们确实存在并且被记录在中央记录设备上。您可以使用Mac上的Console应用程序访问它们。
我也应该能用
不能。应用程序无法访问iOS上的中央日志记录工具(OSLogStore)。希望有一天这会被允许,但目前还没有,苹果也没有特别暗示他们将来会改变这一点。你唯一的选择是打开一个反馈给苹果(他们将文件或忽略;没有办法知道),并希望有一天会添加。如果您需要生产日志,则需要在OSLog之外自己管理它们。

相关问题