首页 > 解决方案 > 如何将错误从 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作为参数传递更好的方法?

标签: iosswiftlogging

解决方案


使用@代替d并将错误转换为字符串

os_log("Error: %@", log: .default, type: .error, String(describing: error))

推荐阅读