Der Prozess ist zu ausführlich, wie kann verhindert werden, dass er system.log überflutet?

Ich verwende diese Anwendung (Solar.app) von Logitech, um die Solarzellen und Batterien von ihrer eigenen Solartastatur (K750) aus zu überwachen.

Ein Vorgang ist viel zu ausführlich und protokolliert ca. 400 Bytes in /var/log/system.log bei jedem Tastendruck.

Ich suche nach verschiedenen Lösungen, um zu verhindern, dass der Prozess system.log überflutet.

Jan  5 17:32:11 pc96 Solar Service[702]: Input data callback for device 0x6047d0
Jan  5 17:32:11 pc96 Solar Service[702]: End of data
Jan  5 17:32:11 pc96 Solar Service[702]: Event = 1 device index = 1
Jan  5 17:32:11 pc96 Solar Service[702]: Input data callback for device 0x6047d0
Jan  5 17:32:11 pc96 Solar Service[702]: End of data
Jan  5 17:32:11 pc96 Solar Service[702]: Event = 1 device index = 1

Ich konnte eine Regel finden, die diesen Nachrichten entspricht, aber:

1/

# ? [= Facility com.Logitech.Solar-Service] file solar-Service.log format=raw

Diese Regel (wenn sie allein verwendet wird) protokolliert die Nachrichten tatsächlich in einer anderen Datei zusätzlich zu system.log. Hier ist solar-Service.log:

[Level 4] [Time 1452071909] [TimeNanoSec 309468000] [PID 702] [Sender Solar Service] [Facility com.Logitech.Solar-Service] [CFLog Local Time 2016-01-06 10:18:29.309] [CFLog Thread 160b] [ReadUID 501] [Message Event = 1 device index = 1] [UID 501] [GID 20] [SenderMachUUID C4A60E0E-5968-829C-BC55-931BBEB0A7F7] [Host pc96]
[Level 4] [Time 1452071909] [TimeNanoSec 951289000] [PID 702] [Sender Solar Service] [Facility com.Logitech.Solar-Service] [CFLog Local Time 2016-01-06 10:18:29.951] [CFLog Thread 160b] [ReadUID 501] [Message Input data callback for device 0x6047d0] [UID 501] [GID 20] [Host pc96] [SenderMachUUID C4A60E0E-5968-829C-BC55-931BBEB0A7F7]

2/

? [= Facility com.Logitech.Solar-Service] ignore

.. aber diese Regel (wenn sie allein verwendet wird) ignoriert die Nachrichten nicht.

und ich verstehe nicht warum das so ist.

@klanomath Das filtert auf Fehlerebene und funktioniert nicht zum Filtern eines Absenders oder einer Einrichtung. Lassen wir sie vorerst verknüpft und beide offen für Antworten. Wenn Sie nun erklären möchten, wie Sie die Protokollebene der Nachrichten dieser App entschlüsseln und dann mit der anderen Filteränderung verknüpfen, wäre das vielleicht cool.
@bmike Es gibt eine andere Frage und Antwort, die besser passt (als Duplikat), aber ich kann sie nicht finden.
Wenn alles andere fehlschlägt, versuchen Sie, den Dateinamen für die Protokolldatei auf /dev/null.

Antworten (2)

Um der Antwort von bmike nachzugehen, lautet die App-ID com.logitech.Solar-App. Der Code, den Sie eingeben möchten, asl.confist also

? [= Facility com.logitech.Solar-App] ignore

Wenn Sie bestätigen möchten, dass ich mit Ihrer App-ID richtig liege, versuchen Sie Folgendes:

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Solar\ App.app/Contents/Info.plist 

Und wenn Sie möchten, dass dies sofort in Kraft tritt, können Sie syslogdmit so etwas neu starten:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

Ja – es gibt eine Möglichkeit, Nachrichten von einem bestimmten Absender/einer bestimmten Anwendung zu ignorieren, anstatt alle Nachrichten nach Schweregrad zu filtern . Sie müssen mit dem Terminal mindestens vertraut sein oder über ein Backup verfügen und bereit sein, Ihren Mac zu löschen und aus dem Backup wiederherzustellen, falls Sie Syntaxfehler machen oder Probleme im Terminal verursachen.

Die Übersicht ist:

  • Sichern Sie das System und erstellen Sie eine Sicherungskopie der Systemprotokoll-Konfigurationsdatei
  • Bearbeiten Sie die Konfigurationsdatei (verwenden Sie nanostatt vi, wenn Sie nicht daran gewöhnt sind, vi)
  • Starten Sie den Protokollierungsprozess erneut
  • prüfen

Sie benötigen einen Admin-Benutzer, um fortzufahren:

sudo cp -p /etc/asl.conf /etc/asl.bak
sudo vi /etc/asl.conf
sudo killall HUP syslog

Hier sind die drei Zeilen (naja, eine leere Zeile wird hier nicht gerendert und die erste Zeile ist ein Kommentar, also wird nur die Zeile benötigt, die darin enthalten ist Facility), die ich hinzugefügt habe, um die App Store-Meldungen von /var/log meines Systems zu ignorieren /system.log-Datei:

# ignore "App Store" messages
? [= Facility com.apple.appstore] ignore

com.apple.appstoreSie sollten das durch die Ergebnisse Ihrer Bewerbung ersetzen .

mdls -name kMDItemCFBundleIdentifier /Applications/Solar\ Service.app/

Ich habe versucht, den Anwendungsnamen mit abzugleichen, [= Sender "App Store"] ignoreaber die Leerzeichen im Anwendungsnamen schienen nicht respektiert zu werden, oder vielleicht funktioniert das Protokollsystem einfach nicht so. Die Einrichtung scheint in meinen Tests mit kMDItemCFBundleIdentifier übereinzustimmen.

Nun die schlechte Nachricht. Das Protokollierungssystem ist in der Lage, Tausende von Nachrichten pro Sekunde zu protokollieren , also wird das Ignorieren der Nachrichten nicht viel bewirken, aber die Betrachtung dieser einen Datei erleichtern. Möglicherweise müssen Sie sich an den Anbieter wenden, um die Anwendung ändern zu lassen, aber hoffentlich funktioniert das Ausblenden der Nachrichten für Ihre Anforderungen, da Sie dies problemlos tun können sollten.

Ich arbeite daran, aber ich kann es immer noch nicht davon abhalten, sich in system.log anzumelden. Gibt es eine Möglichkeit, die Protokolle ausführlicher zu gestalten, damit ich gegebenenfalls meinen Fehler erkennen kann? Manchmal füge ich dieser Datei Tail-Fing hinzu. Deshalb interessiert mich das hier
Siehe meine Bearbeitung. Vielleicht kennst du die Antwort?