学习Object-C 和 iPhone也有将近两个月了,几乎任何讲Object-C的书第一章就会用到NSLog这个函数,这个函数可以向Console输出一些信息,方便我们跟踪程序的运行过程。可是我在做一些iPhone的开发的时候,却需要一些稍微强大的日志功能,譬如文件名,行号,对一些日志Level的控制。我在Google上找了一下,有个Log4Cocoa的,好像是想做成Log4j的功能。可是我平时的需求不需要那么强大,而且我很不喜欢杀鸡用牛刀,于是我自己写了一个简单的日志库SimpleLogger。
其实这个不能算库,说白了就是SimpleLogger.h和SimpleLogger.m两个文件,够简单吧。我定义了一些常用的宏,譬如DEBUG, ENTER, RETURN,大家可以看源代码,也可以直接看MyLogger.m的示例,就知道怎么用了。这个日志库可以支持iPhone和MacOSX的开发,不过它不是线程安全的(iPhone没有这个问题)。
[使用方法]
先看看下面的代码:
#import <Foundation/Foundation.h>
#import "SimpleLogger.h"
int testLogger()
{
ENTER(@"testLogger()");
int rst = 10;
RETURN(-rst, @"%d", -rst);
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[SimpleLogger getLogger];
//insert code here
int i = 10;
INFO(@"i is %d", i);
i = -100;
INFO(@"i is %d", i);
testLogger();
[pool drain];
[[SimpleLogger getLogger]release];
return 0;
}
使用方法也非常简单
[1] 把SimpleLogger.h和SimpleLogger.m加到你的项目中
[2] 调用[[SimpleLogger getLogger]setLogLevelSetting:SOME_LEGEL];(可选的,默认是SLLE_MAJOR)
[3] 最后调用[[SimpleLogger getLogger]release]
[4] 常用方法:
ENTER(@"method name");
INFO(@"The count of array is %d", [array count]);
DEBUG(@"The person's name is %@", person.name);
ERROR(@"Impossible get into this branch");
RETURN(rst, @"%d", rst); //rst就是返回值
LOG(SLL_DETAILED, @"This log is very detailed with value %d", value);
[[SimpleLogger getLogger]setLogLevelSetting:SLLS_MINOR]; //设置日志级别
非常简单的,如果大家有什么问题,欢迎给我发邮件。ankyhe(gmail)。