【问题标题】:Write log content into text file using freopen not working with Swift使用 freopen 将日志内容写入文本文件,但不适用于 Swift
【发布时间】:2017-07-18 10:57:30
【问题描述】:

我想在 Swift 3.0 中将每个 print() 内容写入一个文本文件。 它在 Objective-C 中运行良好,但在 Swift 3.0 中无法运行。 我正在使用如下代码,

    func redirectLogToDocuments() {

    let docDirectory: NSString = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0] as NSString
    let logpath = docDirectory.appendingPathComponent("Logfile.txt")

    freopen(logpath.cString(using: String.Encoding.utf8)!, "a+", stdin)
    freopen(logpath.cString(using: String.Encoding.utf8)!, "a+", stdout)
    freopen(logpath.cString(using: String.Encoding.utf8)!, "a+", stderr)                
}

请帮帮我。

【问题讨论】:

标签: ios iphone swift freopen


【解决方案1】:
 func redirectLogToDocuments() {
    let allPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = allPaths.first!
    let pathStringComponent = "/" + LoggingConstants.LogFileName + "." + LoggingConstants.LogFileType
    let pathForLog = (documentsDirectory as NSString).appending(pathStringComponent)
    freopen(pathForLog.cString(using: String.Encoding.ascii)!, "a+", stderr)
}

在 didFinishLaunching() 中使用上述方法,然后使用 NSLog() 语句而不是 print(),你会得到你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2010-12-17
    • 2018-06-28
    • 2019-01-10
    • 2013-06-23
    • 2023-03-31
    相关资源
    最近更新 更多