【问题标题】:Cocoa Lumberjack: how to show file and line number?Cocoa Lumberjack:如何显示文件和行号?
【发布时间】:2013-10-02 13:18:38
【问题描述】:

我正在尝试为Cocoa Lumberjack 找到一种方法来显示文件和行号。

查看文档和谷歌搜索后,我发现没有简单的方法来做到这一点。

有没有办法在不添加自定义格式化程序的情况下做到这一点?

【问题讨论】:

    标签: ios objective-c macos debugging cocoalumberjack


    【解决方案1】:

    嗯,就像我说的,没有内置的方法。所以,我已经实现了自定义格式化程序:

    @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
    

    【讨论】:

      【解决方案2】:

      虽然可以使用单独的格式化程序类,但它会使您的日志记录代码更加冗长。在我的项目中,我选择添加一些使用 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");
      

      【讨论】:

      • 谢谢,这很有帮助
      【解决方案3】:

      正如 UrK 所建议的那样,没有任何简单的方法,但如果您定义自己的格式化程序,这将非常简单(请参阅 doc

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多