晚上,是否可以将所有打印和调试打印保存在一个文件中?
即使我的应用程序未从 Xcode 启动,我也想要记录其执行的操作。
我想覆盖 print 和 debugPrint 方法并将输入写入文件。
谢谢
最佳答案
Swift 标准库中有方法:
func print<Target>(_ items: Any..., separator: String = default, terminator: String = default, to output: inout Target) where Target : TextOutputStream
和
func debugPrint<Target>(_ items: Any..., separator: String = default, terminator: String = default, to output: inout Target) where Target : TextOutputStream
您可以创建一个实现 TextOutputStream 的对象,将消息保存到您选择的文件中。如果您的代码库中已有打印件,这将非常有用。然后,您只需向它们添加附加参数即可。请记住,这些打印将停止记录到标准输出(控制台)。
例子:
final class LogDestination: TextOutputStream {
private let path: String
init() {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
path = paths.first! + "/log"
}
func write(_ string: String) {
if let data = string.data(using: .utf8), let fileHandle = FileHandle(forWritingAtPath: path) {
defer {
fileHandle.closeFile()
}
fileHandle.seekToEndOfFile()
fileHandle.write(data)
}
}
}
然后
// I would probably use Singleton for this
var dest = LogDestination()
print("My test message", to: &dest)
关于iOS swift : write print and debug prints into a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392655/