Eclipse RCP на OSX - Как прекратить запись в системный журнал?

StackOverflow https://stackoverflow.com/questions/671357

Вопрос

Наше приложение RCP регистрирует довольно много данных, но на консоль выводится только ИНФОРМАЦИЯ и выше.В Windows / linux это нормально, но в OSX все протоколирование, похоже, передается в syslogd, который затем решает, что регистрировать, а что нет, это означает обработку тысяч и тысяч ЛУЧШИХ сообщений журнала, это заставляет syslogd использовать 140% процессора и поглощать память.После запуска нашего приложения в течение примерно 3 минут syslogd использует 2,5 ГБ памяти, и вся система становится непригодной для использования.Уничтожение syslogd / перезагрузка - единственное лекарство.Запуск приложения из консоли приводит к тому, что оно регистрируется непосредственно в консоли, и никаких проблем не возникает.

Как я могу запретить syslogd обрабатывать мой вход в систему RCP в OSX?

Это было полезно?

Решение

Взгляните на файл RCP.App/Contents/Info.plist вашего приложения RCP.Файл по умолчанию, созданный при сборке продукта RCP, имеет <string>-consoleLog<string>.

Возможно, именно поэтому все заканчивается в syslogd.

Другие советы

Я совсем не знаком с Eclipse RCP, но у меня есть некоторый опыт работы с системным журналом.Вероятно, вы регистрируетесь, используя либо local0 или local1 как средство.OSX направляет local0.* Для /var/log/appfirewall.log и local1 Для /var/log/ipfw.log.Если вы регистрируетесь на любом из этих объектов, то все, что вы регистрируете, будет записано на диск.

Я бы начал с того, что сначала посмотрел, можете ли вы настроить средство системного журнала, в которое входит ваше приложение, и как вы это делаете.Как только вы выясните, к какому объекту он подключается, вы сможете отключить его, отредактировав /etc/системный журнал.conf и посылает демону системного журнала сигнал HUP.Прочтите инструкции по syslogd и syslog.conf для получения подробного описания.

Возможно, вы также захотите рассмотреть возможность использования более похожего на Java интерфейса ведения журнала вместо системного журнала.

Меня это тоже иногда покусывало.Мое предположение таково:

Если вы запустите Eclipse через Eclipse.app с рабочего стола, его консоль (stdout / stderr) будет перенаправлена в системный журнал, поэтому любой вывод самого Eclipse (или плагинов, использующих printf) будет в конечном итоге там.

Попробуйте вызвать ./eclipse в Terminal.app и посмотрите, получаете ли вы сообщения вместо этого в окне терминала, а не в системный журнал.

Однако это, конечно, не решает проблему, заключающуюся в том, что вам на самом деле не нужен ни один из них в первую очередь...Выясните, кто создает выходные данные, и заставьте их вместо этого поместить их в журнал ошибок.

К сожалению, я больше не знаю, где это произошло со мной, поэтому не могу это проверить.Удачи вам!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top