从objective-c中的bz2文件中读取日志文件



我想读取已旋转到bz2文件的日志文件的内容。我怎样才能做到这一点,而使用尽可能少的内存?

我刚刚用这些脚本弄清楚了:http://www.cocoadev.com/index.pl?BzipValueTransformer,http://www.cocoadev.com/index.pl?NSDataPlusBzip

你需要做的是包括我在/opt/local/lib/libbz2.a中发现的libbz2.a,因为我使用macports安装了bzip2。我把这个文件拖到我的项目中,并写了下面的代码:

- (void)bunzip
{
    NSString *path = @"/var/log/kernel.log.1.bz2";
    NSData *data = [NSData dataWithContentsOfFile:path];
    NSString *dataString = [[Bzip2ValueTransformer alloc] transformedValue:data];
    NSLog(@"Data: %@", dataString);
}
结果:

Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: wlEvent: en1 en1 Link UP
Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: AirPort: Link Up on en1
Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: en1: BSSID changed to 32:7b:98:82:9d:7f
Dec 16 23:30:10 paul-peelens-macbook-pro newsyslog[13862]: logfile turned over due to size>1000K

我将使用NSTask或我自己的PRHTask打开一个bunzip2进程,其标准输入连接到bzip2文件,并将其标准输出设置为管道。使用NSFileHandle的异步读取或GCD的dispatch_source在后台从管道读取数据。

最新更新