如何从os_log()中查找源文件和行号

sob*_*bri 8 logging ios macos-sierra

针对iOS 10和macOS Sierra中新记录系统的Logging Apple参考明确表示不包括行号和源文件信息,因为它是自动捕获的.

请勿在消息中包含符号信息或源文件行号.系统会自动捕获此信息.

但我还没有找到任何方式来查看这些所谓的捕获值.在控制台应用程序中,我可以看到子系统,类别,进程ID等,但没有关于文件和行.

同样,命令行工具似乎缺少显示此信息的任何选项(除非我遗漏了某些内容).

有人想出来了吗?

Hua*_*ham 5

我不认为它在Swift中可用,尽管您可以在终端中看到C/C++中的文件和行号.在这里查看Apple论坛.

我通过创建一个简单的命令行工具Xcode项目尝试了类似于论坛内部的东西:

import Foundation
import os.log

os_log("rrrr")
Run Code Online (Sandbox Code Playgroud)

在终端输入以下内容:log stream --source --predicate 'eventMessage contains "rrrr"',我得到了这个:

Timestamp                       Thread     Type        Activity             PID    
2017-02-18 17:58:46.012381+0700 0x5067d    Default     0x0                  5637   <testLogSwift`_swift_os_log> rrrr
Run Code Online (Sandbox Code Playgroud)

与我在C/C++版本中得到的相反,它显示了文件和行号:

Timestamp                       Thread     Type        Activity             PID    
2017-02-18 17:55:05.056103+0700 0x4aa01    Default     0x0                  5218   <testLogging`main (main.cpp:13)> qqq
Run Code Online (Sandbox Code Playgroud)

  • 这是固定的吗?我使用Xcode 9.4.1切换到我的iOS 11应用程序(用Swift 4编写)的os_log,当我在Console应用程序中查看日志时,我的os_log调用没有显示行号或文件名. (8认同)
  • 我向Apple提交了错误报告,他们已经为Swift修复了这个问题.应该在不久的将来出来:-) (3认同)