有沒有辦法強制抑制全部登錄Mac OS X桌面Cocoa應用程序?如何禁止在Cocoa應用程序中的所有日誌記錄?
有時候系統的某個部分或插件(不在你的控制之下)會代表你的應用程序將消息記錄到控制檯(system.log)中。
有沒有辦法在應用程序中禁止所有日誌記錄?
有沒有辦法強制抑制全部登錄Mac OS X桌面Cocoa應用程序?如何禁止在Cocoa應用程序中的所有日誌記錄?
有時候系統的某個部分或插件(不在你的控制之下)會代表你的應用程序將消息記錄到控制檯(system.log)中。
有沒有辦法在應用程序中禁止所有日誌記錄?
@gabe:正要建議類似的東西 - 只要嘗試過了,和一個簡單的「FCLOSE(錯誤) '似乎阻止了任何輸出。
確實有竅門。 thx loren。 – 2009-10-03 02:25:50
你可以使用freopen函數來改變其中stdout和sterr點:
http://www.opengroup.org/onlinepubs/000095399/functions/freopen.html
我不認爲這會影響ASL(這是NSLog使用的)。 – 2009-10-03 02:19:27
我也做到了這一點,每當我需要控制檯輸出重定向到一個自定義視圖:
stderr->_write = RedirectOutputToView;
stdout->_write = RedirectOutputToView;
凡RedirectOutputToView原型如下:
int RedirectOutputToView(void *inFD, const char *buffer, int size);
爲什麼?如果您希望能夠過濾掉任何不是來源於您的代碼的日誌條目,那麼只需在您的日誌語句中添加一個特殊標記,然後grep即可。 – user57368 2009-10-03 00:55:08
可能有很多原因。例如,也許你想阻止惡意的應用程序插件氾濫控制檯。 – 2009-10-03 01:19:04
似乎你有一個與Apple Engineering直接討論的案例,圍繞沙箱和圍繞控制檯輸出。抑制來自惡意代碼的消息看起來是合適的(我可能會將它發送到/ dev/null),但似乎是錯誤的方式。 – 2009-10-03 11:53:10