2017-06-06 83 views
0

在iOS开发中,我想测试日志的输出到本地文件。使用重定向可以将“NSLog”输出到文件中,但是如果我使用“printf”输出的时候使用freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);就无法做到了。有没有办法让“printf”输出也被重定向到日志?如何重定向到沙箱在iOS中使用“printf”?

回答

0

我已经很好的答案。

可以使用dup2 instand的freopen,只是这样做:

//将缓冲区禁止

setvbuf(stdout,NULL,_IONBF,0);

//用创建的文件描述符替换掉标准输出和错误输出

//ignore logFilePath(just a file address).

int fd = open([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],(O_RDWR | O_CREAT), 0644);

dup2(fd,STDOUT_FILENO);

dup2(fd, STDERR_FILENO)

然后NSLogprintf之间会重定向到本地。