获取所有控制台内容到一个文件中

Get all console content into a file

我正在尝试将所有控制台日志放入一个文件中。

我找到了像 这样的帖子。我一直在测试这个:NSLog 没有显示内容(打印显示)但是没有数据写入文件,NSLog 和打印的都没有。

当应用程序关闭时,我关闭文件。

我做了如下操作:

var file: UnsafeMutablePointer<FILE>?

func logAll() {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let filename = "/\(Date().timeIntervalSinceReferenceDate).log"
    let logFilePath = paths[0].appending(filename)
    file = freopen(logFilePath.cString(using: .ascii), "a+", stderr)
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    logAll()
    /// rest of the code
}

func applicationWillTerminate(_ application: UIApplication) {

    if let file = file {
        fclose(file)
    }
}

我在这里错过了什么?

好的,我有这个。

有 3 个标准文件:stdinstdoutstderr

因为我只是尝试打印,所以我没有看到它,但常规打印存储在 stdout 文件中。后来,在一个有更多库的项目中尝试,似乎(例如 firebase)日志存储在 stderr.

因此,我不必只打开一个文件,而只需打开 3 个文件即可获取所有日志。

现在唯一的问题是我没有办法获得正确的订单