使用os_log和NSLog快速记录iOS> = 8

Mar*_*sch 0 logging nslog ios swift

我想使用编写自己的日志记录功能os_log(适用于iOS> = 10.0)和NSLog

我已经写了这段代码:

static func LogDebug(log: StaticString) {
    if #available(iOS 10.0, *) {
        os_log(log, type: .debug)
    } else {
        NSLog(log)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是现在我得到了一个例外,即StaticString无法转换为普通String。你知道怎么解决吗?

Mar*_*n R 5

两者的第一个参数os_log()NSLog()一个格式字符串,并含有 格式说明(带开始%),其由下面的变量参数列表扩展。

要记录任意字符串,请使用%@格式,后跟字符串。否则,如果字符串包含%字符,则可能会崩溃或产生错误的输出:

func LogDebug(log: String) {
    if #available(iOS 10.0, macOS 10.12, *) {
        os_log("%@", type: .debug, log)
    } else {
        NSLog("%@", log)
    }
}
Run Code Online (Sandbox Code Playgroud)