原先使用NSLog可以用 %@打印对象的description,现在想自己打印日志到指定文件,自己如何实现啊?有没有类似sprintf这样的Cocoa API完成这个使命啊?

解决方案 »

  1.   

    修改main.m:NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *appLibraryDir = [paths objectAtIndex:0];
    NSString *logFilePath = [appLibraryDir stringByAppendingPathComponent:@"log.txt"];
    freopen([logFilePath fileSystemRepresentation], "w", stderr);int retVal = UIApplicationMain(argc, argv, nil, @"LepaiAppDelegate");
    [pool release];
    return retVal;
      

  2.   

    楼上这样做会把其他输出到stderr的输出也重定位到文件了吧。。
    偶自己找到了方法了,原来
        NSString *str = [[NSString alloc] initWithFormat:format arguments:va];
        alog_c(file, line, level, "%s", [str UTF8String]);alog_c是一个原来实现的日志函数。
    结贴,送分了:)
      

  3.   

    完整是这样:
    void alog_objc(const char *file, long line, alogLevel level, NSString *format, ...){
        va_list va;
        va_start(va, format);
        NSString *str = [[NSString alloc] initWithFormat:format arguments:va];
        alog_c(file, line, level, "%s", [str UTF8String]);
        [str release];
        va_end(va);
    }