Cra*_*0ek 4 logging ios swift oslog
我正在尝试使用新OSLogStore对象来检索创建的日志。像这样使用范围初始化器是很常见的OSLogStore(scope: .currentProcessIdentifier)。只要我不终止该应用程序,这种方法就可以正常工作,但是当我终止该应用程序时,我无法检索以前运行的日志。至少在我的模拟器上不是。
我希望能够将日志保存到文件中并手动管理该文件(如果需要)。所以我尝试使用OSLogStore(url:)初始化程序,但这似乎不起作用。
let url = FileManager.default.temporaryDirectory.appendingPathComponent("logs")
try OSLogStore(url: url)
// Error Domain=OSLogErrorDomain Code=1
// "The specified URL did not refer to a valid log archive"
// UserInfo={
// _OSLogErrorPOSIXErrno=2,
// NSLocalizedDescription=The specified URL did not refer to a valid log archive,
// _OSLogErrorInternalCode=3
// }
Run Code Online (Sandbox Code Playgroud)
这让我认为这可能会引发错误,因为该文件不存在,因此我还尝试将一个空文件写入该位置并更改路径扩展名(更改为.logs、.log和.logarchive),但到目前为止还没有运气。
有谁知道我如何手动告诉OSLog框架在哪个位置存储日志?
不幸的是,根本不可能在 iOS 上以编程方式访问系统日志:
.tracev3) 存储在/var/db/diagnostics沙盒中,您的 ios 应用程序无法访问它们。.tracev3是专有文件格式,OSLog框架没有可用的方法。OSLogStore(url:)仅允许读取.logarchive文件。例如,您可以从设备中获取日志并通过运行以下命令来制作此存档:
sudo log collect --device-name "My iPhone Name" --last 1h --output log.logarchive
Run Code Online (Sandbox Code Playgroud)
然后OSLogStore可以打开该文件并枚举所有日志条目:
sudo log collect --device-name "My iPhone Name" --last 1h --output log.logarchive
Run Code Online (Sandbox Code Playgroud)
使用log命令行 util 收集操作系统日志可以在 MacOS 应用程序上以编程方式进行,但在 iOS 端不可能,因此OSLogStore(url:)在 iOS 上也没有用。
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |