2

RCP アプリケーションはかなりの量をログに記録しますが、INFO 以上のみがコンソールに出力されます。Windows/Linux ではこれで問題ありませんが、OSX ではすべてのログが syslogd に渡され、何をログに記録し、何をログに記録しないかが決定されます。これは、何千もの FINEST ログ メッセージを処理することを意味し、syslogd は 140% の CPU を使用してゴブリングしますメモリアップ。アプリを約 3 分間実行した後、syslogd は 2.5 GB のメモリを使用し、システム全体が使用できなくなります。syslogd を強制終了して再起動することが唯一の解決策です。コンソールからアプリを起動すると、コンソールに直接ログが記録され、問題はありません。

OSX で RCP ロギングを処理する syslogd を停止するにはどうすればよいですか?

4

3 に答える 3

0

私は Eclipse RCP についてはまったく詳しくありませんが、syslog についてはある程度の経験があります。おそらく、 または のいずれlocal0local1をファシリティとして使用してログを記録しています。OSX はlocal0.*/var/log/appfirewall.logおよび/var/log/ipfw.logに送信local1します。いずれかの機能にログを記録している場合、ログに記録するものはすべてディスクに書き込まれます。

最初に、アプリケーションがログを記録している syslog 機能を構成できるかどうか、およびその構成方法を確認することから始めます。ログがどの機能に記録されているかがわかったら、/etc/ syslog.confを編集して syslog デーモンに HUP シグナルを送信することで、それをオフにできるはずです。詳細な説明については、syslogdおよびのマニュアル エントリを参照してください。syslog.conf

また、syslog の代わりに、より Java 風のロギング インターフェイスを使用することを検討することもできます。

于 2009-03-22T18:22:47.283 に答える
0

私も時々これに噛まれました。私の推測はこれです:

デスクトップから Eclipse.app を介して Eclipse を起動すると、そのコンソール (stdout/stderr) が syslog にリダイレクトされるため、Eclipse 自体 (または printf を使用するプラグイン) による出力はすべてそこに保存されます。

Terminal.app で呼び出してみ./eclipseて、syslog ではなくターミナル ウィンドウにメッセージが表示されるかどうかを確認してください。

ただし、これはもちろん、そもそもどちらも望まないという問題を解決しません...誰が出力を生成しているかを調べ、代わりにエラーログに入れさせます。

残念ながら、これがどこで起こったのかわからなくなったので、テストすることはできません。幸運を!

于 2009-03-23T09:46:08.467 に答える