6

我在我的应用程序中使用 NSLog。我想摆脱每个字符串的烦人开头:“2009-07-01 21:11:06.508 MyApp[1191:207]”。

有没有办法这样做?可能是另一个日志记录功能?

谢谢。

4

5 回答 5

12

阅读这些:

这是一个名为“QuietLog”的 Github 项目,最初来自我们的 CocoaHeads 站点,它解释了如何创建一个QuietLog执行您所描述的功能的函数。它还展示了如何将 QuietLog 包装到一个名为 LocationLog 的宏中,以便它会打印出您获得日志语句的文件名和行号。我在我的所有项目中都使用它,并且不再丢失杂散的“NSLog”语句。

于 2009-07-01T19:10:06.657 回答
2

这个预处理器宏很容易实现,您不必更改任何当前NSLog语句:

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

它完全像NSLog在消息之前没有所有额外的东西一样工作。

我最初在另一个 SO question 上找到了这个,但现在找不到了。

于 2012-08-07T01:45:03.287 回答
1

我喜欢能够将 Objective-C 对象用于格式字符串和参数,因此我重新编写了 NSLog() 并将其添加到我的实用程序中。


+ (void)myLog:(NSString *)formatString, ...
{
    va_list args;
    va_start(args, formatString);
    NSString* output = [[NSString alloc] initWithFormat:formatString arguments:args];
    fprintf(stderr, "%s\n", [output UTF8String]);
    [output release];
    va_end(args);
}
于 2009-07-01T19:36:55.043 回答
1

你试过CFShow()吗?

于 2009-07-01T19:49:30.370 回答
0

您可以打印到 sdterr:

fprintf(stderr, "%s", "Your message");

编辑:查看Karl Kraft 的这个实现

于 2009-07-01T18:12:24.390 回答