Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在运行时将iOS中的设备日志从iPhone捕获到Documents目录中的文件中?_Ios_Logging_Nsdocumentdirectory - Fatal编程技术网

如何在运行时将iOS中的设备日志从iPhone捕获到Documents目录中的文件中?

如何在运行时将iOS中的设备日志从iPhone捕获到Documents目录中的文件中?,ios,logging,nsdocumentdirectory,Ios,Logging,Nsdocumentdirectory,我的要求是在iOS中的应用程序运行时将所有调试日志捕获到一个文件中。这样做的基本原因是为了了解我的应用程序在不同网络中的VOIP呼叫行为。我们想了解5G网络中呼叫的行为,因为我们没有测试5G网络中呼叫行为的规定。我们的SDK可以记录行为。我知道通过将开发设备连接到Xcode来捕获其日志,但我需要对生产中的设备执行同样的操作。我想提供一个选项,将这些日志发送到邮件ID。有没有办法?任何帮助都将不胜感激。从生产设备获取日志信息有几个选项,但它们都有缺点 1.系统诊断 用户必须手动触发sysdiagn

我的要求是在iOS中的应用程序运行时将所有调试日志捕获到一个文件中。这样做的基本原因是为了了解我的应用程序在不同网络中的VOIP呼叫行为。我们想了解5G网络中呼叫的行为,因为我们没有测试5G网络中呼叫行为的规定。我们的SDK可以记录行为。我知道通过将开发设备连接到Xcode来捕获其日志,但我需要对生产中的设备执行同样的操作。我想提供一个选项,将这些日志发送到邮件ID。有没有办法?任何帮助都将不胜感激。

从生产设备获取日志信息有几个选项,但它们都有缺点

1.系统诊断 用户必须手动触发sysdiagnose,然后在设置中导航到分析数据,找到相应的文件并以某种方式将其发送给您。它相当大(数百MB),但是您可以在里面找到相应的
logarchive
,您可以在控制台应用程序中打开它或使用
log
命令

2.等待iOS 14(可能) 在macOS上,OSLog框架包含通过
OSLogStore
收集日志信息的方法;在iOS 13 betas中,这也是可用的,但最终已从最终版本中删除。也许苹果会把它放在下一个iOS中

3.使用第三方工具 有几种第三方测井工具可用,只需看看SwiftyBeaver、SwiftLog、CocoaLumberjack或其他工具

4.自带 您还可以在应用程序中实现一些基本的日志记录,将信息写入文件,并让用户通过电子邮件将其发送给您(或通过https传输,但我更愿意通知用户这一点)。有趣的是,我正准备编写一些小助手类,因为我不想要所有这些第三方云日志记录。大概是这样的:


@IBAction func doAction(uu发送方:任意){
pEnter();延迟{pLeave()}
// ...
让dateString=“…”
traceError(“非法初始化日期:\(日期字符串)”)
}
/* ... */
#如果调试
func pEnter(文件:String=#文件,行:Int=#行,函数:String=#函数){
FunctionCallTracker.instance.enter(文件:文件,行:行,函数:函数)
}
func pLeave(文件:String=#文件,行:Int=#行,函数:String=#函数){
FunctionCallTracker.instance.leave(文件:文件,行:行,函数:函数)
}
func traceError(u-text:@autoclosure@escaping()->字符串,
错误:错误?=nil,
file:String=#file,
函数:字符串=#函数,
行:Int=#行){
/* ... */
}
#否则
@内联(u始终)函数跟踪文件(u文本:@autoclosure@escaping()->String){
@内联(_始终)func pEnter(){}
@内联(_始终)函数pLeave(){}
#恩迪夫

如果您感兴趣,我可以在完成后的几周内向您提供最新信息。

那么,sysdiagnose是您的一个选项,还是您想通过编程方式进行更新?您好@AndreasOetjen,sysdiagnose可能不适合我。我不需要系统诊断。我需要日志来确定我的应用程序的性能,并且必须以编程方式进行处理。谢谢@Andreas