在文本中显示来自 filePath 的 .log 文件

Posted

技术标签:

【中文标题】在文本中显示来自 filePath 的 .log 文件【英文标题】:display in a textView a .log file from a filePath 【发布时间】:2019-09-18 22:26:43 【问题描述】:

我正在尝试在文本视图中显示 .log 文件,但似乎无法正确访问文件路径。当我这样做时,它返回零。我正在使用一个名为“SwiftyBeaver”的 pod 来进行日志记录。这是 fileURL 的样子:

file:///var/mobile/Containers/Data/Application/5C92E3E6-9E45-4869-9142-AB9E70EE4FCC/Library/Caches/swiftybeaver.log

这是我用来将 .log 转换为字符串的函数,以便我可以在 textView 中显示它

private func loadTextWithFileName(_ fileName: String) -> String? 
    guard let path = Bundle.main.path(forResource: fileName, ofType: "log"),
        let contents = try? String(contentsOfFile: path) else return nil
    return contents

这就是我在 textView 中显示文本的方式

self.loggingTextView.text = self.loadTextWithFileName(self.file.logFileURL!.absoluteString)

【问题讨论】:

因为您将日志文件的完整 URL(不是文件名)放到了您的函数中。我认为您应该将 tie loadTextWithFileName 函数更改为 loadTextFromPath 【参考方案1】:

您使用Bundle.main.path()的方法主要是搜索您的Bundle中的文件。

但您的log 文件似乎将在您的缓存目录中。

这是在应用的缓存目录中查找文件的方法

private func loadTextWithFileName(_ fileName: String) -> String? 
        if let dir = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first 
            let fileURL = dir.appendingPathComponent(fileName)
            guard let text = try? String(contentsOf: fileURL, encoding: .utf8) else 
                return nil
            
            return text
        
        return nil
    

您可以将catch 块添加到您的try 案例中以检查错误是什么,以防您无法获得日志文件详细信息。

【讨论】:

以上是关于在文本中显示来自 filePath 的 .log 文件的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 控制台中的设计文本[重复]

显示来自服务器的图像时找不到图像的网页

如何在 django 模板中的一行中显示来自 db 的输出文本

如何在 div 框中显示来自 javascript innerhtml 的文本输出,而不会导致文本溢出并且具有 html/css 样式

通过考虑 swift 3 中的 filePath,如何显示以及在何处显示 pdf 文件?

使用 ASP.Net 在 HTML 中显示格式化文本(来自数据库)