2 Stimmen

Eclipse RCP auf OSX - Wie deaktiviere ich das Protokollieren in syslog?

Unsere RCP-Anwendung protokolliert ziemlich viel, aber nur INFO und höher werden auf der Konsole ausgegeben. Auf Windows/Linux ist das in Ordnung, aber auf OSX scheint alle Protokollierung an syslogd weitergeleitet zu werden, der dann entscheidet, was protokolliert und nicht protokolliert werden soll. Das bedeutet, dass Tausende von FEINSTEN Lognachrichten verarbeitet werden müssen, was dazu führt, dass syslogd 140% CPU verwendet und Speicher verbraucht. Nachdem unsere App etwa 3 Minuten lang ausgeführt wurde, verwendet syslogd 2,5 GB Speicher und das gesamte System wird unbrauchbar. Das Abbrechen von syslogd/Neustart ist die einzige Lösung. Das Starten der App von der Konsole aus führt dazu, dass sie direkt auf der Konsole protokolliert wird, und es gibt kein Problem.

Wie kann ich verhindern, dass syslogd mein RCP-Protokollierung auf OSX behandelt?

1voto

Andrew Niefer Punkte 4259

Werfen Sie einen Blick auf die Info.plist-Datei Ihrer RCP-Anwendung RCP.App/Contents/Info.plist. Die Standarddatei, die vom RCP-Produktaufbau generiert wird, hat -consoleLog.

Dies könnte der Grund sein, warum alles im syslogd landet.

0voto

D.Shawley Punkte 56313

Ich bin überhaupt nicht vertraut mit Eclipse RCP, aber ich habe etwas Erfahrung mit syslog. Sie protokollieren wahrscheinlich entweder mit local0 oder local1 als Einrichtung. OSX leitet local0.* nach /var/log/appfirewall.log und local1 nach /var/log/ipfw.log. Wenn Sie zu einer dieser Einrichtungen protokollieren, wird alles, was Sie protokollieren, auf die Festplatte geschrieben werden.

Ich würde damit beginnen, zuerst zu prüfen, ob und wie Sie die syslog-Einrichtung konfigurieren können, zu der Ihre Anwendung protokolliert. Sobald Sie herausgefunden haben, zu welcher Einrichtung protokolliert wird, sollten Sie in der Lage sein, sie durch Bearbeiten von /etc/syslog.conf auszuschalten und dem syslog-Dämon ein HUP-Signal zu senden. Lesen Sie die Handbucheinträge für syslogd und syslog.conf für eine detaillierte Beschreibung.

Sie könnten auch in Betracht ziehen, eine eher Java-ähnliche Protokollschnittstelle anstelle von syslog zu verwenden.

0voto

Volker Stolz Punkte 7045

Gelegentlich wurde ich auch von diesem Problem betroffen. Meine Vermutung ist folgende:

Wenn Sie Eclipse über Eclipse.app vom Desktop aus starten, wird die Konsole (stdout/stderr) in das Syslog umgeleitet, sodass alle Ausgaben von Eclipse selbst (oder von Plugins mit printf) dort landen.

Versuchen Sie, ./eclipse in der Terminal-App aufzurufen und prüfen Sie, ob Sie stattdessen Nachrichten im Terminalfenster erhalten und nicht im Syslog.

Dies löst jedoch nicht das Problem, dass Sie diese Ausgaben eigentlich überhaupt nicht möchten…Finden Sie heraus, wer die Ausgabe produziert, und lassen Sie sie stattdessen im ErrorLog platzieren.

Leider weiß ich nicht mehr, wo dies bei mir passiert ist, daher kann ich es nicht testen. Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X