如何抑制Cocoa应用程序中的所有日志记录?

时间:2009-10-03 00:33:56

标签: objective-c cocoa macos appkit

有没有办法在Mac OS X桌面Cocoa应用程序中强制抑制所有日志记录?

有时,系统的某些部分或插件(不受您控制)会代表您的应用程序将消息记录到控制台(system.log)。

有没有办法抑制应用程序中的所有日志记录?

3 个答案:

答案 0 :(得分:4)

您可以使用freopen来更改stdout和sterr指向的位置:

http://www.opengroup.org/onlinepubs/000095399/functions/freopen.html

答案 1 :(得分:4)

@gabe:刚刚提出类似的建议 - 只是试了一下,一个简单的'fclose(stderr)'似乎阻止了任何输出。

答案 2 :(得分:0)

每当我需要将控制台输出重定向到自定义视图时,我也会这样做:

stderr->_write = RedirectOutputToView;
stdout->_write = RedirectOutputToView;

RedirectOutputToView具有以下原型:

int RedirectOutputToView(void *inFD, const char *buffer, int size);