Cocoa Lumberjack: how to show file and line number?
Asked Answered
M

3

8

I am trying to find a way for Cocoa Lumberjack to show me file and line number.

After looking through the docs and some Googling, I found no easy way to do this.

Is there any way to do this without adding custom formatter?

Mattson answered 2/10, 2013 at 13:18 Comment(0)
M
15

Well, like I said, there is no built-in way. So, I've implemented custom formatter:

@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
Mattson answered 11/10, 2013 at 6:38 Comment(0)
D
8

While a separate formatter class would work, it would make your logging code a bit more verbose. In my project I opted for adding some additional macros that make use of CocoaLumberjack like so:

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

In your client code, you could then call:

DLogWarn(@"This is a warning");
Dermatology answered 14/10, 2014 at 15:1 Comment(0)
T
0

As UrK suggested, there isn't any trivial way, but it's pretty simple if you define your own formatter (see doc)

Tumescent answered 21/11, 2013 at 10:37 Comment(1)
The formatting documentation has moved to here: github.com/CocoaLumberjack/CocoaLumberjack/blob/master/…Dilettantism

© 2022 - 2024 — McMap. All rights reserved.