`

自己写的 iPhone / MacOS 简单日志库SimpleLogger

阅读更多

学习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)。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics