2

我希望能够将 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不会向文件写入任何数据,它会创建文件,只是没有输出!

4

2 回答 2

2

好吧NSLog,实际上并不能让您自定义其输出的去向,因此您最好使用自己的日志记录功能。就我个人而言,我会使用log_fine,log_info样式并使用类似 NSString 的 writeToFile 方法:

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

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

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

至于格式化日期/时间,请参阅NSDateFormatter课程。

于 2009-12-06T09:10:06.867 回答
2

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

于 2009-12-06T16:33:28.987 回答