xcodebuild 在调试级别不显示 OSLog 的输出

Posted

技术标签:

【中文标题】xcodebuild 在调试级别不显示 OSLog 的输出【英文标题】:xcodebuild does not show output from OSLog in debug level 【发布时间】:2021-08-28 16:56:13 【问题描述】:

我正在使用 xcodebuild 在 CI 中测试我的应用程序。我这样调用它:

xcodebuild test -project myapp.xcodeproj -scheme myappTests -destination 'platform=ios Simulator,name=iPhone 8,OS=14.4'

使用来自OSLogLogger 记录的文本不会显示在调试级别。因此,如果我的测试中有类似的东西,它不会显示在xcodebuild 的输出中,但我希望看到:

Logger(subsystem: "a", category: "b").debug("something")

我可以将xcodebuild 的日志级别设置为调试吗?显示具有错误级别的消息。

我尝试设置 xcodebuildDebugLogLevel=3 但这给了我相同的日志信息。

【问题讨论】:

【参考方案1】:

记录器不会将debug(和trace)消息打印到输出,因为模拟器上子系统的日志级别是INFO

您可以通过接下来的步骤进行检查:

    找到您用于测试的模拟器 UDID:
$ xcrun simctl list
...
-- iOS 15.2 --
    iPhone 8 (C1D16369-D358-438E-8395-D01C2DE55980) (Shutdown) 
...
    根据需要启动它
$ xcrun simctl boot C1D16369-D358-438E-8395-D01C2DE55980
    检查子系统名称的日志级别:
$ xcrun simctl spawn C1D16369-D358-438E-8395-D01C2DE55980 log config --subsystem <your-subsystem-name> --status
Mode for '<your-subsystem-name>'  INFO PERSIST_DEFAULT

要将当前日志级别更改为DEBUG,您可以使用下一条命令:

$xcrun simctl spawn C1D16369-D358-438E-8395-D01C2DE55980 log config --subsystem <your-subsystem-name> --mode level:debug

再次检查:

xcrun simctl spawn C1D16369-D358-438E-8395-D01C2DE55980 log config --subsystem <your-subsystem-name> --status 
Mode for '<your-subsystem-name>'  DEBUG PERSIST_DEFAULT

现在,您使用 xcodebuild 进行的测试必须在输出中包含所有调试(和跟踪)消息。

注意:即使从 abobe 更改后,Console.app 也不提供调试/跟踪消息,这是模拟器的老已知问题。

【讨论】:

我应该用 代替什么?当我填写创建记录器的值的子系统时,我收到此终端错误:处理命令时遇到错误(域 = NSPOSIXErrorDomain,代码 = 2):无法完成操作。没有这样的文件或目录 没有这样的文件或目录 @J.Doe 通常 应采用反向 DNS 表示法,例如 com.your_company.your_subsystem_name。哪个命令失败?

以上是关于xcodebuild 在调试级别不显示 OSLog 的输出的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 12.5.1 或 Xcode 13 中使用 OSLog?

log4j 信息级别和调试不起作用

如何配置 WildFly 8.2.0 日志记录以仅在调试级别显示应用程序

xcodebuild - 错误域=IDECapabilitiesErrorDomain 代码=1

如何控制 glib 中调试信息的级别?

Xcodebuild 在 cordova ios 项目中停止