xcodebuild执行CI测试时无法显示OSLog的debug级别日志该如何解决
xcodebuild 展示OSLog debug级别日志解决方案
原因说明
你配置的xcodebuildDebugLogLevel参数仅用于控制xcodebuild工具自身的执行日志输出级别,和被测试应用内部的OSLog框架日志策略完全无关,因此不会生效。xcodebuild默认仅会捕获应用输出的error、fault级别的OSLog日志,debug、info级别的日志默认会被系统过滤。
可用解决方案
- 方案1:命令行注入OSLog环境变量(无需修改代码)
直接在原xcodebuild命令中添加测试环境变量,修改后的命令如下:
xcodebuild test -project myapp.xcodeproj -scheme myappTests -destination 'platform=iOS Simulator,name=iPhone 8,OS=14.4' -testEnvironment 'OS_ACTIVITY_MODE=debug'
该参数会强制测试进程输出所有级别OSLog日志,无需修改项目代码。
- 方案2:并行调用log stream捕获日志
如果方案1不生效,可以在CI脚本中同时启动日志捕获进程,主动拉取系统中对应subsystem的debug日志,命令示例:
# 后台启动日志捕获,输出到log.txt文件 log stream --level debug --predicate 'subsystem == "a"' > log.txt & LOG_PID=$! # 执行你的xcodebuild测试 xcodebuild test -project myapp.xcodeproj -scheme myappTests -destination 'platform=iOS Simulator,name=iPhone 8,OS=14.4' # 测试结束后终止日志捕获进程,打印日志内容 kill $LOG_PID cat log.txt
- 方案3:代码中修改日志级别
可以在单元测试的全局初始化方法中修改指定subsystem的日志输出级别,代码示例:
import OSLog override func setUpWithError() throws { try super.setUpWithError() os_log_set_level(OSLogType.debug.rawValue, OSLog(subsystem: "a", category: "b")) }
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

