В стандартной библиотеке 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
, который сохранит сообщение в файл вашеговыбор.Это очень полезно, если у вас уже есть отпечатки в базе кода.Затем вы можете просто добавить к ним дополнительный параметр.Помните, что эти распечатки прекратят запись в стандартный вывод (консоль).
Документация для печати
Документация для debugPrint
Пример:
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)