cocoa伐木工人:如何显示文件和行号?

我正在努力为cocoa伐木工人find一个方法来显示我的文件和行号。

看完文档和一些Googlesearch后,我发现没有简单的方法来做到这一点。

有没有办法做到这一点,而不添加自定义格式化?

那么就像我说的那样,没有固定的方法。 所以,我已经实现了自定义格式化程序:

@interface LineNumberLogFormatter : NSObject<DDLogFormatter> - (NSString *)formatLogMessage:(DDLogMessage *)logMessage; @end @implementation LineNumberLogFormatter - (NSString *)formatLogMessage:(DDLogMessage *)logMessage { NSString *path = [NSString stringWithCString:logMessage->file encoding:NSASCIIStringEncoding]; NSString *fileName = [path lastPathComponent]; return [NSString stringWithFormat:@"%@:%d %@", fileName, logMessage->lineNumber, logMessage->logMsg]; } @end 

虽然单独的格式化程序类可以工作,但它会使您的日志logging代码变得更加冗长。 在我的项目中,我select使用CocoaLumberjack添加一些额外的macros,如下所示:

 // Prefix.pch file // ... #ifdef DEBUG #define DLogError(fmt, ...) DDLogError((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define DLogWarn(fmt, ...) DDLogWarn((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define DLogInfo(fmt, ...) DDLogInfo((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define DLogDebug(fmt, ...) DDLogDebug((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #define DLogVerbose(fmt, ...) DDLogVerbose((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #else #define DLogError(fmt, ...) #define DLogWarn(fmt, ...) #define DLogInfo(fmt, ...) #define DLogDebug(fmt, ...) #define DLogVerbose(fmt, ...) #endif 

在你的客户代码中,你可以调用:

 DLogWarn(@"This is a warning"); 

正如UrK所build议的那样,没有什么微不足道的方法,但是如果你定义了你自己的格式化程序,这很简单(参见doc )