有没有简单的方法在所有方法中添加NSLog或任何日志记录语句?

时间:2014-07-23 12:48:13

标签: ios objective-c objective-c-runtime

我即将完成项目,我想在其中添加日志记录。我知道市场上有一些好的记录器(CocoaLumberjack)。但为此,我需要将log语句添加到每个方法中。随着项目即将完成,有很多方法。那么,有什么方法或解决方法吗? 不向所有方法添加日志语句如果我将添加到任何中心位置,它将适用于所有方法。

我不确定在每个方法之前是否都有这样的Objective-C运行时函数。

这个方法对我这样的所有情况都有帮助,或者任何新的dev正在编写新方法,然后他不需要记住添加日志语句。

修改:

这仅用于调试目的。我将添加一种控制日志的方法,如关闭和打印某个级别的详细信息。

2 个答案:

答案 0 :(得分:5)

不要这样做。认真。由于软件繁琐,用户不喜欢他们的日志文件填满,你也会通过模糊真正重要的消息来惹恼所有其他开发人员。

在调试过程中,您应该只使用NSLog()这种方式作为绝对的最后手段。即便如此,还有更好的方法(例如,您可以使用dtrace;如果您要转储所有objc_msgSend()次调用,除了那些通过{的方法调用之外,您几乎可以看到所有方法调用{1}}和浮点数(如果适用于您的平台)。

如果真的必须制作一个繁琐的应用程序,请创建自己的日志文件,编写自己的日志记录功能(理想情况下使用asl),即使这样做也是个好主意可以控制的一组标志,例如从用户默认设置启用不同类型的调试输出。

答案 1 :(得分:1)

使用此覆盖的NSObject类别怎么样?

-(BOOL)respondsToSelector:(SEL)aSelector {
    printf("Excessive Log: %s\n", [NSStringFromSelector(aSelector) UTF8String]);
    return [super respondsToSelector:(aSelector)];
}