2013-10-02 10 views

答えて

16

私が言ったように、組み込みの方法はありません。だから、私は、カスタムフォーマッタを実装しました:

@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 
0

ユルクが示唆したように、いずれかの些細な方法はありませんが、あなたがあなた自身のフォーマッタを定義した場合、それは非常に簡単です(docを参照)

+0

フォーマットのドキュメントはここに移動しました://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/Documentation/CustomFormatters.md – Natalia

6

を別のフォーマッタながらクラスが動作すると、ロギングコードがもう少し冗長になります。私のプロジェクトでは、私はそうのようCocoaLumberjackを利用するいくつかの追加のマクロの追加を選択しました:クライアントコードで

// 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 

を、あなたがして呼び出すことができます。https:

DLogWarn(@"This is a warning"); 
+0

ありがとう、これはとても役に立ちます – Natalia

関連する問題