如何以编程方式查找用户的日志记录目录?

时间:2012-04-10 03:33:01

标签: objective-c macos cocoa

鉴于一个名为ExampleApp的应用程序,我想基本上不使用硬编码路径找到“〜/ Library / Logs / ExampleApp”。存在NSSearchPathForDirectoriesInDomains,您可以使用NSApplicationSupportDirectory搜索词来查找“〜/ Library / Application Support / ExampleApp”之类的内容,但似乎没有用于记录的搜索词。

我不认为〜/ Library / Logs是非标准的,因为CrashReporter将其日志放在那里。

2 个答案:

答案 0 :(得分:4)

试试这个:

NSString* libraryPath = [NSHomeDirectory stringByAppendingPathComponent:@"Library/Logs"];

更新(〜/ Library / Logs / AppName)

NSString* bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString* logsPath = [NSString stringWithFormat:@"Library/Logs/%@",bundleName];

NSString* libraryPath = [NSHomeDirectory stringByAppendingPathComponent:logsPath];

答案 1 :(得分:1)

Cocoa没有提供查找所有标准目录的方法。旧的FSFindFolder()函数可以提供更多功能,但确实涉及从FSRef转换回路径或URL。 Apple不鼓励使用它,但它仍然是获得某些标准目录而无需硬编码的唯一方法。也就是说,它不会包含您的应用名称。你必须追加它。

编辑添加:link to the legacy docs