2009-10-03 2 views
2

Есть ли способ заставить подавление всех регистрации в Mac OS X для настольного приложения Cocoa?Как вы можете подавить все записи в приложении Cocoa?

Иногда какая-то часть системы или плагин (который находится вне вашего контроля) регистрирует сообщения от имени вашего приложения на консоли (system.log).

Есть ли способ подавить все записи в вашем приложении?

+0

Почему? Если вы хотите отфильтровать любые записи журнала, которые не были получены из вашего кода, просто добавьте специальный тег к вашим операторам журналов и grep для этого. – user57368

+0

Могло быть много причин. Например, возможно, вы хотите, чтобы вредоносный плагин вашего приложения не заливал консоль. –

+0

Кажется, что у вас есть случай для прямого обсуждения с Apple Engineering вокруг этих частей; вокруг песочного бокса и вокруг консольного выхода. Подавление сообщений от вредоносного кода кажется целесообразным (и я бы, вероятно, отправил его в/dev/null), но просто кажется неправильным. –

ответ

4

@gabe: как раз собирался предложить нечто подобное - просто попытался это, и просто «fclose (STDERR) ', кажется, предотвращает выход.

+0

, который действительно делает трюк. thx loren. –

0

Я также сделал это, когда я необходимо перенаправить вывод консоли в настраиваемое представление:

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

Где RedirectOutputToView имеет следующий прототип:

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