Cocoa Lumberjack: как показать номер файла и строки?

Я пытаюсь найти способ для Cocoa Lumberjack показать мне номер файла и строки.

Просмотрев документы и немного погуглив, я не нашел простого способа сделать это.

Есть ли способ сделать это без добавления пользовательского форматтера?


person UrK    schedule 02.10.2013    source источник


Ответы (3)


Ну, как я уже сказал, встроенного способа нет. Итак, я реализовал собственный форматтер:

@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
person UrK    schedule 11.10.2013

Хотя отдельный класс форматирования будет работать, он сделает ваш код ведения журнала немного более подробным. В своем проекте я решил добавить несколько дополнительных макросов, использующих 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

В вашем клиентском коде вы можете вызвать:

DLogWarn(@"This is a warning");
person bizz84    schedule 14.10.2014
comment
Спасибо, это очень полезно - person Natalia; 11.05.2017

Как предложил УрК, нет никакого тривиального способа, но это довольно просто, если вы определяете свой собственный форматтер (см. документ)

person Bogdan    schedule 21.11.2013
comment
Документация по форматированию перемещена сюда: github.com/CocoaLumberjack/CocoaLumberjack/ капля/мастер/ - person Natalia; 28.04.2017