Logrotate-Dateien mit Datum im Dateinamen
Ich versuche, konfigurieren Sie logrotate in RHEL für tomcat6-Protokolle. Derzeit logrotate funktioniert gut für catalina.Protokoll, es wird gedreht und komprimiert ordentlich.
Ist das problem mit den Dateien mit Datum wie:
catalina.2012-01-20.log
catalina.2012-01-21.log
catalina.2012-01-22.log
Diese Dateien werden nicht gedreht. Ich verstehe, dass ich habe, diesen zu konfigurieren in /etc/logrotate.d/tomcat6-Datei wo die rotation für catalina.heraus konfiguriert ist. Aber ich bin nicht in der Lage es zu konfigurieren.
Alles was ich will ist, dass diese älteren Dateien komprimiert werden täglich, mit Ausnahme der aktuellen Datums-log-Datei.
Kann mir jemand helfen auf dieser, bitte!!!!
Dank
Noman A.
Kommentar zu dem Problem
Gleiche problem mit tomcat. log-rotate sieht jede catalina.[Datum].melden Sie sich als eine andere Datei. Es Dosis nicht Gruppe Sie als catalina.log. Es dreht sich nicht. Jede Datei kommt als catalina.[Daten].log.1.gz. So Ende ich mit 200 Dateien mit der log.1.gz am Ende.
InformationsquelleAutor der Frage Noman Amir | 2012-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Ersten post immer so wenn es aussieht wie eine betrunkene Spinne hat es formatiert, dann sorry)
Nachdem Sie unseren Freund Google, hier, und ich kann mich nicht erinnern, wo ich sonst noch etwas bewirken konnte, mit "logrotate" (eher als cron oder eine andere gleichwertige).
Ich habe eine der folgenden in /var/log/rsync/:
und die folgenden logrotate-Datei:
die ich dachte, war durchaus sinnvoll. Aber nachdem es sich weigerte, zu arbeiten und auf die Feststellung, dass es nie funktionieren würde (mit freundlicher Genehmigung von diesem post) ich fragte mich, ob es sein könnte, frisiert, damit es funktioniert.
Nach langem testen und tüfteln habe ich es geschafft fudge folgende Weise:
in eine logrotate-Konfigurationsdatei namens /etc/logrotate.d/local-rsync. Erstellen Sie dann den dummy log-Datei:
dann zwingen, ein logrotate mit:
gibt:
Jetzt nur warten, bis morgen...
Mir ist klar, dass cron wäre aufgeräumter, jedoch habe ich ein weiteres element in der logrotate config-Datei und wollte die beiden zusammen.
Bonus mit der dummy-Datei ist, dass es nicht nehmen jeden Raum!
Können Sie feststellen, dass es offenbar nicht gedreht, alles an einem Tag. Er nahm mich, während Sie arbeiten heraus, warum, aber dann ist es twigged. find-mtime +1 ist ganze Tage (also 24*60 Minuten) und, wenn die tägliche logrotate trat in weniger als 24 Stunden seit der letzten Zeit, die/Zeit, die Protokolle erstellt wurden, dann ist es manchmal so scheint nicht geklappt zu haben. Wenn es dich stört dann über 23 Stunden mit find -mmin +1380 besser geeignet sein könnten.
InformationsquelleAutor der Antwort northern-bradley
Verbrachte ich eine ganze Weile Lesen, eine Menge an Dokumentation. Logrotate scheint nicht in der Lage sein, die Gruppe die verschiedenen Dateien mit Datum im Namen enthalten der Datei. Logrotate kann nicht tun, was wir brauchen, es zu tun.
Haben Sie zwei Optionen ändern Sie die logging-Funktion zur Verfügung gestellt von java /tomcat nicht enthalten das Datum im Dateinamen.
http://tomcat.apache.org/tomcat-6.0-doc/logging.html
Die zweite und schnellere Methode ist die Verwendung Ihrer eigenen kleinen Skript um die Arbeit zu tun für Sie, mit
find
. https://serverfault.com/questions/256218/logrotation-when-filenames-includes-date, https://serverfault.com/a/256231/71120Ging ich mit der zweiten option, denn unsere Entwickler haben die kodierten Daten in den Dateien Namen. So muss es auch bleiben.
Die
-mtime +5
- sets finden, nur suchen Sie nach Dateien, die älter sind als 5 Tage.Vom
find
's Dokumentation.Aktualisiert per Kommentar
Wenn Sie ausdrücklich löschen möchten, ist dies ein schneller Weg, es zu tun.
Wenn Sie brauchen, um einige andere Befehl können Sie immer ersetzen Sie die
exec rm {} \;
mit etwas anderem.InformationsquelleAutor der Antwort nelaaro
So etwas in /etc/cron.d/rotate_tomcat_logs:
InformationsquelleAutor der Antwort DeBaan
/Pfad/zu/logs/*.log {
missingok
komprimieren
drehen 7
}
diese Art von Ding nicht normal arbeiten, weil da andere darauf hinweisen, tomcat hat seine eigenen log-rotation. Sie können entweder mit einem einfachen cron zum löschen Alter Dateien oder deaktivieren Sie die Drehung auf die access log valve. Durch ausschalten der log-rotation (und mögliche änderung der Dateinamen-Muster), das über logrotate und anderen ähnlichen configs funktionieren.
Die Quintessenz ist, sollten Sie verwenden logrotate oder die eingebaute log-rotation, die in tomcat-aber nicht beides zur gleichen Zeit.
InformationsquelleAutor der Antwort dres
Wahrscheinlich können Sie das Datum aus dem log-Datei-Namen, wie beschrieben in
So entfernen Sie das Datum Muster vom tomcat-logs nutzen zu können logrotate Regeln.
Dieser arbeitete für mich zumindest für den localhost-Zugriff anmelden.
InformationsquelleAutor der Antwort geekQ
Aktivieren tägliche rotation der log in tomcat [linux] mit postfix von Datum zu catalina-Datei, führen Sie die nachstehenden änderungen.
Download cronolog-Paket und installieren in linux os
wget http://pkgs.fedoraproject.org/repo/pkgs/cronolog/cronolog-1.6.2.tar.gz/md5/a44564fd5a5b061a5691b9a837d04979/cronolog-1.6.2.tar.gz
öffnen apache-tomcat-7.0.65/bin/catalina.sh die Datei mit dem vi-Befehl und ändern Sie die Zeilen wie unten angegeben
Beispiel : /opt/apache-tomcat-7.0.65/bin/catalina.sh
Nachdem die oben genannten änderungen speichern Sie die Datei und starten Sie den tomcat um die änderungen zu übernehmen.
InformationsquelleAutor der Antwort Suresh Telagareddi
In Ihren log-drehen-Datei, verwenden Sie
rotate #
, wobei # die Anzahl der logs, die Sie behalten möchten, bevor Sie Sie zu entfernen.InformationsquelleAutor der Antwort Paul Armstrong
Gut, ich war nicht ganz zufrieden mit einer der Antworten, die, obwohl diejenigen, die besagt, dass die
logrotate
dies nicht unterstützt (ich. e. nur Dateien entfernen, um eine andere Anwendung) Szenario sind sicherlich richtig (heben Sie eine feature-Anfrage auf das tool, vielleicht?).So, ich möchte ein alternativer Ansatz, den ich habe. Im Gegensatz zu den "
find /path/to/logs -mtime +7 -delete
" Lösung, dieser wird nicht entfernen alle die alten Protokolle nach einer bestimmten Zeit. Also hier geht es darum, ein Beispiel zu one-liner bash-Befehl, der die Blätter nur N letzten logs auf der Festplatte (, wenn es ausgeführt wird):Schließlich, um für das Thema völlig, der Letzte alternative Lösung ist nicht die Rotation der log-Dateien (. e. g. verwenden
rotatable=false
im Fall von Tomcat - siehe seine docs) und verwenden Sie dielogrotate
als gewöhnlich, aber vergessen Sie nicht, verwenden Sie es mit dem 'copytruncate' option.Vorschläge sind willkommen...
InformationsquelleAutor der Antwort Petr Bodnár