OSX /var/log/system.log - Wo definiere ich das Schnittintervall?

7

Ich habe ein Skript, das /var/log/system.log regelmäßig überprüft, und ich habe in unserem Netzwerk festgestellt, dass einige Computer Protokolldateien durch Neustarts und andere Aktivitäten einen Monat lang aufbewahren, während einige die Datei jede Nacht oder jeden Neustart löschen.

Kennt jemand die genauen Regeln hier oder ob ich Intervalle angeben kann? Danke im Voraus.

David Houde
quelle

Antworten:

6

Unter OS X wird /var/log/system.log durch den newsyslogBefehl gedreht, der jede halbe Stunde ausgeführt wird (siehe /System/Library/LaunchDaemons/com.apple.newsyslog.plist), wenn der Mac ausgeführt wird und Erwachen. Die Rotationsregeln befinden sich in /etc/newsyslog.conf. Die entsprechenden Zeilen lauten:

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/system.log                     640  7     *    @T00  J

Wenn ich dieses Recht verstehe (siehe die Manpage newsyslog.conf ), bedeutet das "@ T00" im Feld "wann", dass das Protokoll gedreht wird, wenn newsyslog zwischen Mitternacht und 1 Uhr morgens ausgeführt wird - dh um 12:30 Uhr. Wenn der Mac jedoch um 12:30 Uhr ausgeschaltet ist oder schläft, wird dieser Lauf nicht ausgeführt und das Protokoll wird an diesem Tag nicht gedreht, weshalb Sie wahrscheinlich solche variablen Ergebnisse sehen.

Wenn Sie die Rotationskriterien ändern möchten, können Sie /etc/newsyslog.conf bearbeiten. Die meisten anderen Protokolle werden je nach Größe gedreht, und ich bin mir nicht sicher, warum system.log anders ist.

UPDATE: Ab 10.9 wurde die Rotationssteuerung für system.log von /etc/newsyslog.conf nach /etc/asl.conf verschoben (die Konfiguration für die Apple System Log-Funktion, die das Schreiben in system.log übernimmt). Es wird einen Abschnitt wie diesen geben:

# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log

Der Abschnitt "rotate = seq compress file_max = 5M all_max = 50M" steuert die Archivierung und Aufbewahrung. Weitere Informationen und Optionen finden Sie unter man asl.conf .

Das Protokollierungssystem wurde in 10.12 ziemlich gründlich umgeschrieben, aber dies scheint sich nicht geändert zu haben.

Gordon Davisson
quelle
Tolle Antwort, ich wünschte, ich könnte zweimal abstimmen. Danke vielmals!
David Houde
Hat sich dies in El Capitan geändert? Ich sehe nicht system.login newsyslog.confoder in newsyslog.d.
Barmar
@Barmar Es wurde nach /etc/asl.conf verschoben. siehe Update.
Gordon Davisson
Wohin gehen die alten (gedrehten) Protokolldateien?
Jason Harrison
@JasonHarrison Das wird durch die kontrollierte rotate=NAME_STYLE, compressund dest=PATHOptionen in der asl.conf Datei. Siehe den Abschnitt "DATEI-DREHUNG" auf der Manpage . Im Fall von system.log rotate=seq compressbedeutet dies, dass sie als /var/log/system.log.0.gz, ... / system.log.1.gz usw. gespeichert werden, wenn sie insgesamt 50 MB erreichen ( der all_maxParameter), der älteste wird gelöscht.
Gordon Davisson