Objective-C NSLog变体:没有完整路径的__FILE__和没有datetime的输出

时间:2012-05-30 14:26:30

标签: objective-c c-preprocessor nslog pch

出于调试目的,我已将此代码添加到.pch。 虽然我对输出非常满意,但是当我在__FILE__定义中使用DLog时,我想改进我打印文件名的方式(没有完整路径)。

我正在使用[[NSString stringWithUTF8String:__FILE__] lastPathComponent]

也许你可以建议一个更清洁/更短的方法吗?

#ifdef DEBUG
    #define DLog(...) NSLog(@"%@ %d %s %s", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, __FUNCTION__)
    #define ALog(...) [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding] file:[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lineNumber:__LINE__ description:__VA_ARGS__]
#else
    #define DLog(...) do { } while (0)
    #ifndef NS_BLOCK_ASSERTIONS
        #define NS_BLOCK_ASSERTIONS
    #endif
    #define ALog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])
#endif

更新 如果可能的话,我也希望摆脱日期时间和应用名称(i.e. 2012-05-30 16:23:29.795 AppName[11746:12203]。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为[[NSString stringWithUTF8String:__FILE__] lastPathComponent]可能会成为@(__FILE__).lastPathComponent,因为在你提出这个问题之后会引入文字语法。