Wie kann ich mit systemd logrotieren?

5040
htor

Ich führe eine Knoten-App mit systemd mit einer Unit-Datei aus. Das App-Protokoll kann mit angezeigt werden journalctl -u example.com, das Protokoll wird jedoch zu einem bestimmten Zeitpunkt abgeschnitten, wodurch der Verlauf gelöscht wird (den ich zum Debuggen benötige).

Wie konfiguriere ich die Protokollrotation mit systemd, sodass meine App-Protokolle usw. gespeichert werden example.com.log.1, example.com.log.2sodass ich den Verlauf meiner App abfragen kann?

Dies ist meine Unit-Datei:

ExecStart=/usr/bin/node keystone.js #Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=example.com User=user Group=user Environment=NODE_ENV=production  [Install] WantedBy=multi-user.target 
7
Bitte geben Sie Ihre systemd-Version sowie Ihr Betriebssystem und Ihre Version an. Mark Stosberg vor 7 Jahren 1
Überprüfen Sie `man journald.conf`, um die Optionen zu überprüfen, die den Festplattenspeicher des systemd-Journals steuern. Wenn Sie noch eine Frage haben, veröffentlichen Sie den Inhalt Ihrer `/ etc / systemd / journald.conf`. Mark Stosberg vor 7 Jahren 1

1 Antwort auf die Frage

3
DougC

Speicher erhöhen

Wenn Sie auf Festplatte speichern, können Sie den Speicherplatz erhöhen, indem Sie SystemMaxUseund / oder ändern SystemKeepFree. Wenn Sie mehr Speicherplatz haben, können mehr Einträge gespeichert werden.

Standardmäßig beträgt das maximale Verwendungslimit ( SystemMaxUse) 10% des Dateisystems und der Mindestwert für den freien Speicherplatz ( SystemKeepFree) 15% - obwohl beide auf 4G begrenzt sind.

Journal Rotation

Die Journale sollten automatisch gedreht werden, wenn sie den SystemMaxFileSizeWert erreichen, und die Anzahl der Journale wird von gesteuert SystemMaxFiles. Wenn Sie eine zeitbasierte Rotation bevorzugen, können Sie festlegen, MaxFileSecwie viele Einträge maximal in einem Journal gespeichert werden sollen.

Hinweis zum Lagerort / Typ

Bei journal können Sie die Journaleinträge entweder im Speicher ( Storage=volatile) oder auf der Festplatte ( Storage=persistent) speichern . In diesem Fall wird davon ausgegangen, dass Sie Journale auf der Festplatte speichern. Ist dies nicht der Fall, muss "System" in den obigen Variablen durch "Laufzeit" ersetzt werden.

Weitere Details finden Sie in man journald.conf.

Alternative - Weitergabe der Journaleinträge

Wenn Sie bereits mit dem traditionellen SYSLOG-Dämon vertraut sind, können Sie die Journalereignisse weitergeben, indem Sie die ForwardToSyslogOption (die die Nachrichten sofort weiterleiten) festlegen oder der Syslog-Dämon wie ein Journalclient sein und die Protokolle selbst abrufen.