0

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

4

1 回答 1

0

我的答案很好。

您可以使用dup2instand of freopen,只需这样做:

//将彻底毁灭

setvbuf(stdout,NULL,_IONBF,0);

//用创建的错误文件替换掉标准输出和输出</p>

//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)

然后在NSLog和之间printf将重定向到您的本地。

于 2017-06-13T05:06:40.827 回答