【发布时间】:2010-11-25 09:15:30
【问题描述】:
当我使用时
NSLog(@"fooBar")
它会打印出很多我不想要的东西:
2009-09-03 13:46:34.531 MyApp[3703:20b] fooBar
有没有办法在没有这个大前缀的情况下将内容打印到控制台? 我想在控制台中画一张桌子和其他一些东西,这样空间就很重要了……
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch uikit
当我使用时
NSLog(@"fooBar")
它会打印出很多我不想要的东西:
2009-09-03 13:46:34.531 MyApp[3703:20b] fooBar
有没有办法在没有这个大前缀的情况下将内容打印到控制台? 我想在控制台中画一张桌子和其他一些东西,这样空间就很重要了……
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch uikit
NSLog 只是打印到 strerr。请改用 fprintf。
fprintf(stderr, "foobar");
【讨论】:
NSLog() 不只是打印到stderr。它还使用com.apple.console 的设施记录到ASL_LEVEL_WARNING 的系统日志。您可以使用asl(3) 手册页中讨论的函数来执行相同的操作。也就是说,如果您正在绘制一个 ASCII 表,您可能真的不想想要记录到系统日志中。请酌情写信给stdout/stderr。
这是来自 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
【讨论】:
这是 borkware quickies 的一个变体:http://cocoaheads.byu.edu/wiki/a-different-nslog。它打印发生日志的文件和行号。我一直在用它。
【讨论】:
printf() 和-[NSString UTF8String]。