【发布时间】:2017-09-05 04:29:24
【问题描述】:
我有一个引用 3rd-party 框架的项目。它使用NSLog。我想将NSLog 重定向到其他目的地(比如Dotzu)
是否可以在我的项目中覆盖 NSLog?
【问题讨论】:
我有一个引用 3rd-party 框架的项目。它使用NSLog。我想将NSLog 重定向到其他目的地(比如Dotzu)
是否可以在我的项目中覆盖 NSLog?
【问题讨论】:
你不能覆盖它,因为它是一个函数,而不是一个方法。但是,NSLog() 在NSLogv() 的讨论中所述的某些条件下额外写入stderr,由NSLog() 调用:
将错误消息记录到 Apple 系统日志工具(参见 man 3 asl)。如果 STDERR_FILENO 文件描述符已从默认值重定向或将转到 tty,它也将被写入那里。如果您想将输出定向到其他地方,则需要使用自定义日志记录工具。
所以只需使用freopen() 重定向STDERR_FILENO。
【讨论】: