在iOS开发中,我想测试日志输出到本地文件。使用重定向可以做到将“NSLog”输出到文件,但是如果我使用“printf”输出时使用freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
就不行了。有没有办法让“printf”输出也被重定向到日志?
问问题
45 次
1 回答
0
我的答案很好。
您可以使用dup2
instand 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 回答