首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCGLogger 3.0不向文件系统写入日志文件(iOS 9)

XCGLogger 3.0不向文件系统写入日志文件(iOS 9)
EN

Stack Overflow用户
提问于 2015-11-04 17:40:58
回答 2查看 1.7K关注 0票数 3

我想使用XCGLogger 3.0在用Swift 2编写的iOS9应用程序中进行日志记录。

代码语言:javascript
复制
let log = XCGLogger.defaultInstance() 

在应用程序中:didFinishLaunchingWithOptions,我使用:

代码语言:javascript
复制
log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: "/tmp/app.log", fileLogLevel: .Debug)

当我在模拟器中启动应用程序时,我会在XCGLogger 7的控制台中看到XCode的输出。

2015年-11-04 18:28:40.798 Info > myapp版本: 1.0构建:1 PID: 49243 2015-11-04 18:28:40.798 Info > XCGLogger版本: 3.0 - LogLevel:调试 2015-11-04 18:28:40.801 Info > XCGLogger写日志到:XCGLogger

但是,当我查看正确的模拟器实例(使用SimPholders2)的沙箱文件系统时,没有日志文件app.log。

当我在IPhone 6上启动应用程序时,情况就更糟了。XCode控制台中的输出是:

2015-11-04 18:36:14.692错误>尝试打开日志文件写入失败:操作无法完成。(可可误差2.)

我也尝试过不同的路径,如"/tmp/app.log“、"Library/Caches/de.myidentifier.myapp/app.log","/Library/Caches/de.myidentifier.myapp/app.log”等,但没有成功.

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-05 04:34:23

在iOS上,您不能只写到/tmp文件夹。您需要确保路径位于应用程序的沙箱中。

要做到这一点,您需要向系统请求缓存目录。XCGLogger中的示例应用程序包含了这样做的代码,但我也会在这里包含它。

试试这个:

代码语言:javascript
复制
let cacheDirectory: NSURL = {
    let urls = NSFileManager.defaultManager().URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask)
    return urls[urls.endIndex - 1] 
}()
let logPath: NSURL = cacheDirectory.URLByAppendingPathComponent("app.log")
log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: logPath, fileLogLevel: .Debug)
票数 12
EN

Stack Overflow用户

发布于 2017-10-24 10:52:20

如果有人需要这里是Swift 4版本的戴夫伍德的例子。谢谢你的XCGLogger,这是一个很好的工具。

代码语言:javascript
复制
let cacheDirectory: URL = {
    let urls = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)
    return urls[urls.endIndex - 1]
}()

let logPath = cacheDirectory.appendingPathComponent("app.log")

let fileDestination = FileDestination(writeToFile: logPath, identifier: "testLogger.fileDestination", shouldAppend: true)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33528507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档