NSLog输出到文件,或iOS的外部日志记录功能

时间:2009-12-06 09:07:02

标签: ios nslog

我希望能够将N SLog的内容写入我指定的文件,或者我需要一个将日志写入文件的函数,例如:

WriteLog(@"some activity by the user");
WriteLog(@"some more activity by the user");

但我希望输出看起来像这样:

12-25-2009 1:30:00PM some activity by the user
12-25-2009 1:35:00PM some more activity by the user

有谁知道我怎么做到这一点?请注意,我需要行开头的日期和时间。

另外,由于某种原因,freopen不会将任何数据写入文件,它会创建文件,只是没有输出!

2 个答案:

答案 0 :(得分:2)

NSLog并不能让您自定义其输出的位置,因此您最好滚动自己的日志记录功能。我个人会使用log_finelog_info样式并使用类似NSString的writeToFile方法:

[log_string writeToFile:@"log.log" atomically:YES encoding:NSUTF8StringEncoding error:NULL];

唯一的问题是使用原子选项可能会影响性能,因此这可能是一个更好的解决方案:

NSFileHandle *output = [NSFileHandle fileHandleForWritingAtPath:"log.log"];
[output seekToEndOfFile];
[output writeData:[log_string dataUsingEncoding:NSUTF8StringEncoding]];

关于格式化日期/时间,请参阅NSDateFormatter类。

答案 1 :(得分:2)

我将自己的日志写入文件类,但我发现在绝大多数情况下,只需复制调试器控制台的内容,将其粘贴到文件并使用编辑或脚本在必要时进行处理就更容易了。即使是非常大的转储也能很好地工作。我甚至以这种方式倾倒了桌子。它不够优雅,但方式,方式更快,更容易出错,而不是文件。