我想知道如何使用统一日志记录来处理以下相当常见的情况。假设我有一个要记录的Foo类的对象。 Foo实现了CustomStringConvertible协议,因此我可以获得在日志中可以使用的对象的描述:
class Foo: CustomStringConvertible {
var bar:Int = 1
var description: String {
return "<\(type(of: self)): bar = \(bar)>"
}
}
let myFoo = Foo()
如果我致电print(myFoo)
,我会得到一个很好的关于Foo的描述。但是,os_log(myFoo)
无法使用,因为description不是StaticString。有什么方法可以完成我想做的事情?
答案 0 :(得分:3)
我无法理解您觉得困难的部分,所以这是一个完整的示例,您可以根据需要选择其中的一个:
import UIKit
import os
let mylog = OSLog(subsystem: "com.neuburg.matt", category: "testing")
class Foo: CustomStringConvertible {
var bar:Int = 1
var description: String {
return "<\(type(of: self)): bar = \(bar)>"
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let foo = Foo()
os_log("%{public}@", log: mylog, String(describing:foo))
}
}
打印:
[testing] <Foo: bar = 1>
...我相信这是目标,不是吗?