Einrichten eines benutzerdefinierten Protokolls

Ich muss alle Chromium- und Firefox-Infoprotokolle aus /var/log/system.logund in eine schöne Ruhe bringen /var/log/{chromium,firefox}.log.

Ich kann mich jedoch weder erinnern noch finden, wie ich das einstelle syslog.conf. Wie würde ich das anstellen?

BEARBEITEN: Ich habe mir die asl.confDatei für den asl-Logging-Daemon angesehen. Dies scheint etwas mit dem zu tun zu haben, was ich möchte, obwohl der Wechsel von Syslog zu einem binären Protokollformat direkt gegen den Sinn ist.

BEARBEITEN: Um ganz klar zu sein, kann man Syslog verwenden, um die Protokolle dynamisch zu schneiden. Apple wechselt von Syslog zum Apple-Systemprotokoll. Der grep-Ansatz befasst sich also nur mit den veralteten /var/logsyslogd-Dateien.

Der Wechsel zu syslog-ng und die Protokollierung zu sqlite scheint einfacher zu sein, aber wer weiß? Ich bin sicher, dass das proprietäre Format der richtige Weg ist.

Beachten Sie, dass

syslog(1) 

ist das Befehlszeilentool für die ASL-Datenbank.

syslog(3) 

ist die C-API für den syslogd-Daemon. Der ASL-Ersatz für das Obige ist

asl(3)

Jetzt,

syslogd(8) 

hat 2 Module, eines schreibt in die Dateien, die in definiert sind

syslog.conf(5)

und einer, der in das Apple-Systemprotokoll schreibt, wie in definiert

asl.conf(5) 

ASL scheint die Zukunft zu sein. Syslogd wird sowohl von als auch syslog.confkonfiguriert asl.conf.

Antworten (2)

Die Situation ist so: Anwendungen können die syslog(3)-API und die asl(3)-API verwenden, um Nachrichten zu protokollieren, andere protokollierte Daten können aus dem Kernel oder aus dem Netzwerk stammen. Alle diese Meldungen werden an den Syslog-Daemon übergeben: syslogd(8). Der syslogd gibt jetzt Protokollmeldungen sowohl auf BSD-Weise (er schreibt Dinge in verschiedene grundlegende Protokolldateien wie /var/log) als auch in einen einheitlichen Protokollnachrichtenspeicher (/var/log/asl.log) aus.

Wenn Sie möchten, dass bestimmte Protokollmeldungen nicht in Ihren Protokolldateien erscheinen ( z. B. wenn Sie Protokolle wie system.log lesen, indem Sie sie in Console.app auswählen), müssen Sie syslog.conf(5) konfigurieren, wie Chiggsy sagte . Wenn Sie möchten, dass Nachrichten nicht in der asl-Datenbank gespeichert werden, müssen Sie asl.conf(5) konfigurieren.

Wenn Sie zum Beispiel nicht mehr möchten, dass die Log-Meldungen von Bonjour (mDNSResponders) in der ASL-Datenbank gespeichert werden, müssen Sie die folgende Zeile zu /etc/asl.conf hinzufügen:

? [= Sender mDNSResponder] ignore

… und starten Sie dann den syslogd "sanft" neu, indem Sie:

sudo killall -HUP syslogd 

Jetzt werden Nachrichten von mDNSResponder nicht mehr angezeigt, wenn Sie zu „Alle Nachrichten“ von Console.app gehen, aber sie existieren immer noch in Ihren Protokolldateien.

Wenn Sie schließlich syslog(1) von der Befehlszeile aus aufrufen, fungiert es als nettes Frontend zum Abfragen der ASL-Datenbank - Sie könnten es beispielsweise bitten, alle Meldungen vom Time Machine Backup-Starter anzuzeigen, die in den letzten zwei Stunden protokolliert wurden durch Laufen:

syslog -k Facility -k Sender com.apple.backupd-auto -k Time ge −2h

…was erklärt, warum die ASL-Datenbank praktisch ist: Sie können in „allen Logdateien“ gleichzeitig nach Logdateien suchen.

Wie finden Sie also heraus, wer der "Absender" sein soll? Zum Beispiel möchte ich sshd-Sachen sehen, ich habe "sshd" und "com.openssh.sshd" ausprobiert und keine Informationen zurückgegeben, die eindeutig in system.log vorhanden sind
@Michael gute Frage! In der Tat bin ich mir nicht sicher, warum syslogsich sshd (und anscheinend vnc, ftp) anders verhält, also habe ich dies hier als neue Frage eingereicht .

In der Praxis gibt es 2 Antworten, wenn ich den Speicherort der Protokolldatei ändern möchte.

Syslog:

Die Lösung besteht darin , die Manpage OS X syslog.conf nicht zu lesen. Lesen Sie die von FreeBSD . Syslog funktioniert immer noch auf diese Weise, wenn es sein BSD-Modul verwendet.

!-org.chromium.Chromium

*.notice;authpriv,remoteauth,ftp,install,internal.none  /var/log/system.log
kern.*                          /var/log/kernel.log

!*

!org.chromium.Chromium
*.*                                                 /var/log/stfu.log
!*

Dadurch wird das lächerlich gesprächige Protokoll von Chrom aus /var/log/system.log entfernt und in stfu.log abgelegt.