欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-03 10:02:51
...

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