swift 使用 os_log 和 NSLog 记录 iOS >= 8
swift logging for iOS >= 8 with os_log and NSLog
我想使用 os_log
(可用于 iOS >= 10.0)和 NSLog
.
编写自己的日志记录函数
我已经写了这段代码:
static func LogDebug(log: StaticString) {
if #available(iOS 10.0, *) {
os_log(log, type: .debug)
} else {
NSLog(log)
}
}
但是现在我得到一个异常,就是StaticString 不能转换成普通的String。你知道怎么解决吗?
这样试试。
static func LogDebug(log: StaticString) {
if #available(iOS 10.0, *) {
os_log(log, type: .debug)
} else {
NSLog(String(describing: log))
}
}
os_log()
和 NSLog()
的第一个参数都是 格式字符串 ,并且包含
format specifiers(以 %
开头)由以下可变参数列表扩展。
要记录任意字符串,请使用 %@
格式,后跟
细绳。否则,如果字符串包含 %
个字符,它可能会崩溃或产生错误的输出:
func LogDebug(log: String) {
if #available(iOS 10.0, macOS 10.12, *) {
os_log("%@", type: .debug, log)
} else {
NSLog("%@", log)
}
}
我想使用 os_log
(可用于 iOS >= 10.0)和 NSLog
.
我已经写了这段代码:
static func LogDebug(log: StaticString) {
if #available(iOS 10.0, *) {
os_log(log, type: .debug)
} else {
NSLog(log)
}
}
但是现在我得到一个异常,就是StaticString 不能转换成普通的String。你知道怎么解决吗?
这样试试。
static func LogDebug(log: StaticString) {
if #available(iOS 10.0, *) {
os_log(log, type: .debug)
} else {
NSLog(String(describing: log))
}
}
os_log()
和 NSLog()
的第一个参数都是 格式字符串 ,并且包含
format specifiers(以 %
开头)由以下可变参数列表扩展。
要记录任意字符串,请使用 %@
格式,后跟
细绳。否则,如果字符串包含 %
个字符,它可能会崩溃或产生错误的输出:
func LogDebug(log: String) {
if #available(iOS 10.0, macOS 10.12, *) {
os_log("%@", type: .debug, log)
} else {
NSLog("%@", log)
}
}