Перенаправить NSLog в файл в Swift не работает

Я пытаюсь отправить NSLog в файл в Swift 3, работающий на Simulator, IOS 10.2, и ничего не производится

Как NSLog в файл

func redirectConsoleLogToDocumentFolder() { let file = "file.txt" if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { let logPath = dir.appendingPathComponent(file).absoluteString print("log:\(logPath)") freopen(logPath, "a+", stderr) } NSLog("print nslog") } 

Вывод

 ~/Library/Developer/CoreSimulator/Devices/A7B717-3ED8-493A-9778-C594AF9FF446/data/Containers/Data/Application/B0386-64BB-46EB-9BF2-65209FC748CD/Documents/file.txt 

Единственный эффект заключается в том, что вывод больше не печатается на консоли.

я пытался

 freopen(logPath.cString(using: .utf8), "a+", stderr) 

и различные другие комбинации

У меня нет проблем с записью файла с помощью пути, который я получаю, поэтому нет ничего плохого в этом

Я ожидал увидеть файл, созданный с именем file.txt в пути, и файл, содержащий «print nslog». Я попытался создать файл первым без успеха.

Свойство absoluteString URL создает строку URL, например

     Файл: ///path/to/file.txt

который не подходит в качестве аргумента для freopen() . Чтобы получить путь к файлу в виде строки, используйте вместо этого path :

 let logPath = dir.appendingPathComponent(file).path 

Лучше, используйте выделенный метод для передачи URL-адреса пути к системному вызову:

 let logFileURL = dir.appendingPathComponent(file) logFileURL.withUnsafeFileSystemRepresentation { _ = freopen($0, "a+", stderr) } 
  • Как обеспечить локализованное описание с типом ошибки в Swift?
  • Swift 3 сохранение и извлечение пользовательского объекта из userDefaults
  • попробуйте, попробуйте! & пытаться? какая разница, и когда использовать их?
  • круглые поездки Типы данных Swift в / из данных
  • swift Сделайте снимок и сохраните его в библиотеке фотографий
  • Правильно Разбор JSON в Swift 3
  • Сохранить словарь в userdefaults в swift 3 с помощью xcode 8
  • Как остановить DispatchWorkItem в GCD?
  • Что является хорошим примером для различения fileprivate и private в Swift3
  • Опциональный параметр закрытия с быстрой скоростью 3
  • Триггерное уведомление еженедельно Swift 3
  • Давайте будем гением компьютера.