我正在测试我的iPhone应用程序,其中一些人通过iTunes与我提供的移动配置文件一起安装它.Apple对于如何从这些人获取崩溃日志有很好的指导,但它是否也可以从他们的设备获取控制台日志?我没有这些人的物理访问权限,否则我可以将他们的设备连接到我的计算机并在管理器中看到控制台登录.我想给他们指示,让我得到他们的控制台日志,但似乎没有办法?
如何获取包含所有打印/Nslog 内容的控制台日志并将其显示在文本视图上?非常感谢您的回答。
是否有任何隐藏按钮可以看到Xcode 9.3中的实时设备日志,或者苹果迫使我们去控制台查看设备日志它也可能是一个错误.
我在Xcode的Devices and Simulator选项卡中看不到底部的小箭头了.
我在Swift中使用新的统一日志API.
所以我创建了一个记录器并使用它如下:
let testLogger = OSLog(subsystem: "my.subsystem", category: "test")
os_log("just a test: %@", log: testLogger, type: .error, "error")
Run Code Online (Sandbox Code Playgroud)
如果iOS设备与Mac断开连接,如何检索记录的消息?
我知道新的控制台应用程序会显示设备连接到Mac时记录的消息.但是,我想检索设备与计算机断开连接时记录的消息.我怎样才能做到这一点?
谢谢.
我正在使用新os.log
事物登录我的应用程序,如下所示:
import os.log
class ViewController: UIViewController {
// a bunch of methods
}
extension OSLog {
static let ui = OSLog(subsystem: "io.my.app", category: "ui")
}
extension ViewController {
func upload(locations: [LocationProtocol]) {
os_log("Sending locations to server", log: .ui, type: .debug)
self.server_api.send(locations)
}
}
Run Code Online (Sandbox Code Playgroud)
Console.app
当我从 Xcode 调试应用程序时,日志按预期显示。但是是否有可能以某种方式从部署在设备上的应用程序实例中检索记录的字符串?我正在“现场”测试我的应用程序,远离笔记本电脑,并希望将收集的日志转储到文本文件中。
我是否需要以某种方式配置记录器以持久存储日志,或者只能从已部署的应用程序获取崩溃报告?
注意:我使用的是Swift 4 / Xcode 9+
我试图将NSLog发送到在模拟器,IOS 10.2上运行的Swift 3中的文件,并且没有生成任何内容
func redirectConsoleLogToDocumentFolder() {
let file = "file.txt"
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let logPath = dir.appendingPathComponent(file).absoluteString
print("log:\(logPath)")
freopen(logPath, "a+", stderr)
}
NSLog("print nslog")
}
Run Code Online (Sandbox Code Playgroud)
产量
~/Library/Developer/CoreSimulator/Devices/A7B717-3ED8-493A-9778-C594AF9FF446/data/Containers/Data/Application/B0386-64BB-46EB-9BF2-65209FC748CD/Documents/file.txt
Run Code Online (Sandbox Code Playgroud)
唯一的影响是输出不再打印到控制台.
我试过了
freopen(logPath.cString(using: .utf8), "a+", stderr)
Run Code Online (Sandbox Code Playgroud)
以及其他各种组合
使用我收到的路径写入文件没有问题,所以没有任何问题
我希望在路径中看到一个名为file.txt的文件,并且该文件包含"print nslog".我尝试先创建文件但没有成功.
我正在使用 Apple 的框架创建日志os.log
。我只是制作如下日志:
os_log("Update: Lat: %{public}f | Long: %{private}f | RemainingTime: %{public}f ", log: log, type: .default, location.coordinate.latitude, location.coordinate.longitude, UIApplication.shared.backgroundTimeRemaining).
Run Code Online (Sandbox Code Playgroud)
我确实在控制台和调试器中看到了日志。
我已阅读此内容,并且成功下载了该容器(只是不确定该容器是否包含我要查找的内容,或者这是否是查看的正确位置)。然后我单击“显示包”:
但之后我只看到:
我查看了所有文件。这些文件只包含以下数字:
我应该做一些额外的事情还是我找错了地方?
EDIT1:根据日航的建议:
我调查了(文档、图书馆、tmp)。有plist
和ktx
文件。和function.data
&map.data
文件。
我查看了这些文件:
还有这些文件:
我尝试用控制台打开它们,但得到如下图所示的乱码结果:
编辑2:
所以首先我没有权限打开/var/db/diagnostics
,我不得不这样做sudo bash
。然后我做了cd /var/db/diagnostics
并看到了这些文件。
Events
FaultsAndErrors
Oversize
SpecialHandling
StateDumps
TTL
logdata.Persistent.20170724T212501.tracev3
logdata.Persistent.20170725T015616.tracev3
logdata.Persistent.20170725T134017.tracev3
logdata.Persistent.20170725T171020.tracev3
logdata.Persistent.20170725T213354.tracev3
logdata.Persistent.20170726T002702.tracev3
logdata.Persistent.20170726T144412.tracev3
logdata.Persistent.20170726T202128.tracev3
logdata.Persistent.20170727T021506.tracev3
logdata.Persistent.20170727T033929.tracev3
logdata.Persistent.20170727T075325.tracev3
logdata.Persistent.20170727T145233.tracev3
logdata.statistics.0.txt
logdata.statistics.1.txt
shutdown.log
Run Code Online (Sandbox Code Playgroud)
然后我做了open -a console logdata.Persistent.20170725T015616.tracev3
(我 …