如何在NSLog中摆脱所有这些垃圾?

时间:2009-09-03 17:50:55

标签: iphone objective-c cocoa cocoa-touch uikit

当我使用

NSLog(@"fooBar")

它打印出了许多我不想要的东西:

2009-09-03 13:46:34.531 MyApp[3703:20b] fooBar

有没有办法在没有这个大前缀的情况下将某些内容打印到控制台? 我想在控制台中绘制一个表和其他一些东西,以便空间至关重要......

3 个答案:

答案 0 :(得分:9)

这是来自borkware.com的Mark Dalrymple

http://borkware.com/quickies/single?id=261

更安静的NSLog(General-> Hacks)[永久链接]

// NSLog() writes out entirely too much stuff.  Most of the time I'm
// not interested in the program name, process ID, and current time
// down to the subsecond level.
// This takes an NSString with printf-style format, and outputs it.
// regular old printf can't be used instead because it doesn't
// support the '%@' format option.

void QuietLog (NSString *format, ...)
{
  va_list argList;
  va_start (argList, format);
  NSString *message = [[[NSString alloc] initWithFormat: format
                                              arguments: argList] autorelease];
  printf ("%s", [message UTF8String]);
  va_end  (argList);

} // QuietLog

答案 1 :(得分:2)

这是borkware quickies的变体:http://cocoaheads.byu.edu/wiki/a-different-nslog。它打印日志发生的文件和行号。我一直都在使用它。

答案 2 :(得分:-2)

NSLog只是打印到strerr。改为使用fprintf。

fprintf(stderr, "foobar");