Eclipse RCP на OSX - Как остановить запись в системный журнал? - PullRequest
2 голосов
/ 22 марта 2009

Наше приложение RCP регистрирует честный бит, но на консоль выводятся только INFO и выше. В windows / linux это нормально, но в OSX все журналы, похоже, передаются в syslogd, который затем решает, что регистрировать, а не регистрировать, это означает обработку тысяч и тысяч сообщений FINEST log, это заставляет syslogd использовать 140% ЦП и gobble до памяти. После запуска нашего приложения в течение примерно 3 минут syslogd использует 2,5 ГБ памяти, и вся система становится непригодной для использования. Убить syslogd / rebooting - единственное лекарство. Запуск приложения из консоли приводит к его непосредственному входу в консоль, и проблем нет.

Как мне остановить syslogd, обрабатывающий мою запись RCP в OSX?

Ответы [ 3 ]

1 голос
/ 30 марта 2009

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

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

0 голосов
/ 23 марта 2009

Я тоже время от времени меня это укусил. Я думаю, это:

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

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

Тем не менее, это couse не решает проблему, которую вы на самом деле не хотите, чтобы ни один из них во-первых ... Узнайте, кто производит вывод, и заставьте их вместо этого поместить его в ErrorLog.

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

0 голосов
/ 22 марта 2009

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

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

Возможно, вы захотите использовать более интерфейс Java-esque logging вместо syslog.

...