ios - 如何将错误从 Swift 传递给 os_log?
问题描述
我正在尝试从 catch 块中记录错误。文件说明如下:
要格式化日志消息,请使用标准 NSString 或 printf 格式字符串
除了标准格式字符串说明符(例如 %@ 和 %d)外,日志系统还支持自定义解码值,方法是以 %{value_type}d 格式内联表示值类型。此外,说明符 %.*P 可用于解码任意二进制数据。该系统包括许多内置的值类型解码器,如表 3 所示。
errno %{errno}d 管道损坏
当我这样做时,我得到一个错误:
import os.log
do {
try throwError()
} catch {
os_log("Error: %{errno}d", log: .default, type: .error, error)
}
但是编译器输出错误:
参数类型“错误”不符合预期类型“CVarArg”
有没有比error.localizedDescription
作为参数传递更好的方法?
解决方案
使用@
代替d
并将错误转换为字符串
os_log("Error: %@", log: .default, type: .error, String(describing: error))
推荐阅读
- javascript - Pressable 和 TouchableOpacity 的区别
- pandas - 大熊猫的分组总和
- node.js - 未显示 Azure Web 应用程序/虚拟目录上的节点应用程序
- if-statement - 在eclipse中反转if语句
- java - 没有为 log4j2 的 Appender AchLog 问题提供名称属性
- python - Google Cloud PubSub 在异步拉取消息时抛出 504 Deadline Exceeded 错误
- python - 使用 Python2 与 Python3 进行 Base64 URL 解码
- css - 滚动捕捉类型接近使用哪个捕捉点?
- c++ - 尝试将 lambda 函数放入队列时出现一般分配器错误(可能与 unique_ptr 相关)
- azure-cosmosdb - azure cosmos数据库资源token有效期在哪里配置?