- 在开发
Network Extension
应用时, 为了方便调试, 需要实时查看日志的输出信息 - 但是,
宿主APP
和Network Extension
是两个不同的进程, 并不能同时在Xcode控制台输出, 而是需要切换Attach to Process
单独查看
- 为了同时查看
宿主
APP和Network Extension
的输出日志, 我们可以使用控制台
APP
一、os.log
- 要在
控制台
APP中查看我们自己应用的日志, 就需要用到os.log
库
import os.log
- 我们需要创建一个
OSLog
对象, 配置输出日志的分类信息, 传递两个参数subsystem
用于定义日志的子系统,通常是你应用的一个大模块或大部分功能。它帮助你在多个日志中标识这个日志属于哪个大模块category
是对日志的进一步细分,用于将日志按类别进行分类。不同的category
可以帮助你区分日志的类型或者日志的具体用途。
let log = OSLog(subsystem: "com.yourcompany.networkextension", category: "network_vpn")
- 在需要打印日志的地方, 使用下面的代码, 可以配置五种不同级别的日志
os_log("[default]", log: log, type: .default)
os_log("[info]", log: log, type: .info)
os_log("[debug]", log: log, type: .debug)
os_log("[error]", log: log, type: .error)
os_log("[fault]", log: log, type: .fault)
二、Console.app
- 打开
控制台APP
, 在左侧有个设备
列表, 找到你要调试的设备, 然后在右上角输入category
的参数值, 我这里用的是network_vpn
- 点击
控制台
APP的开始按钮
- 运行
宿主APP
, 然后就可以看到日志输出了, 默认情况下, 只能输出default
、error
、fault
三种日志
-
在
控制台
App的顶部工具栏中, 有一个操作
选项, 其中包含两个选项- 包括简介信息:
info
级别日志 - 包括调试信息:
debug
级别日志
- 包括简介信息:
-
勾选后, 再次运行
宿主APP
, 就可以看到info
和debug
级别的日志信息了
三、终端
- 还可以通过
终端
监听OSLog
的日志信息 - 打开终端, 输入命令
log stream --predicate 'subsystem == "com.yourcompany.networkextension"' --level debug
- 然后就可以监听
debug
界别以上的所有日志, 命令行输出截图如下