logrotate kann Protokolle nicht rotieren

logrotate kann Protokolle nicht rotieren

logrotate kann meine Protokolle nicht rotieren. Ich habe die Dateiberechtigungen überprüft, sie sind in Ordnung.

Ich habe sogar versucht, „su root root“ in die Konfigurationsdatei einzufügen, aber ich habe immer noch das gleiche Problem.

Nachfolgend finden Sie die entsprechenden Einzelheiten:

Datei logrotate.conf:

/var/log/testlog {
    compress
    delaycompress
     maxage 180
    rotate 15
    size 1024M
    start 1
    rotate 15
    missingok
}

Debug-Protokolle: [mit "-d]

rotating pattern: /var/log/testlog  1073741824 bytes (15 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/testlog
  log needs rotating
rotating log /var/log/testlog, log->rotateCount is 15
dateext suffix '-20140708'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/testlog.15.gz to /var/log/testlog.16.gz (rotatecount 15, logstart 1, i 15), 
renaming /var/log/testlog.14.gz to /var/log/testlog.15.gz (rotatecount 15, logstart 1, i 14), 
renaming /var/log/testlog.13.gz to /var/log/testlog.14.gz (rotatecount 15, logstart 1, i 13), 
renaming /var/log/testlog.12.gz to /var/log/testlog.13.gz (rotatecount 15, logstart 1, i 12), 
renaming /var/log/testlog.11.gz to /var/log/testlog.12.gz (rotatecount 15, logstart 1, i 11), 
renaming /var/log/testlog.10.gz to /var/log/testlog.11.gz (rotatecount 15, logstart 1, i 10), 
renaming /var/log/testlog.9.gz to /var/log/testlog.10.gz (rotatecount 15, logstart 1, i 9), 
renaming /var/log/testlog.8.gz to /var/log/testlog.9.gz (rotatecount 15, logstart 1, i 8), 
renaming /var/log/testlog.7.gz to /var/log/testlog.8.gz (rotatecount 15, logstart 1, i 7), 
renaming /var/log/testlog.6.gz to /var/log/testlog.7.gz (rotatecount 15, logstart 1, i 6), 
renaming /var/log/testlog.5.gz to /var/log/testlog.6.gz (rotatecount 15, logstart 1, i 5), 
renaming /var/log/testlog.4.gz to /var/log/testlog.5.gz (rotatecount 15, logstart 1, i 4), 
renaming /var/log/testlog.3.gz to /var/log/testlog.4.gz (rotatecount 15, logstart 1, i 3), 
renaming /var/log/testlog.2.gz to /var/log/testlog.3.gz (rotatecount 15, logstart 1, i 2), 
renaming /var/log/testlog.1.gz to /var/log/testlog.2.gz (rotatecount 15, logstart 1, i 1), 
renaming /var/log/testlog.0.gz to /var/log/testlog.1.gz (rotatecount 15, logstart 1, i 0), 
renaming /var/log/testlog to /var/log/testlog.1
removing old log /var/log/testlog.16.gz
error: error opening /var/log/testlog.16.gz: No such file or directory

Ausführliche Ausgabe:

rotating pattern: /var/log/testlog  1073741824 bytes (15 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/testlog
  log needs rotating
rotating log /var/log/testlog, log->rotateCount is 15
dateext suffix '-20140625'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/testlog.15.gz to /var/log/testlog.16.gz (rotatecount 15, logstart 1, i 15), 
old log /var/log/testlog.15.gz does not exist
renaming /var/log/testlog.14.gz to /var/log/testlog.15.gz (rotatecount 15, logstart 1, i 14), 
old log /var/log/testlog.14.gz does not exist
renaming /var/log/testlog.13.gz to /var/log/testlog.14.gz (rotatecount 15, logstart 1, i 13), 
old log /var/log/testlog.13.gz does not exist
renaming /var/log/testlog.12.gz to /var/log/testlog.13.gz (rotatecount 15, logstart 1, i 12), 
old log /var/log/testlog.12.gz does not exist
renaming /var/log/testlog.11.gz to /var/log/testlog.12.gz (rotatecount 15, logstart 1, i 11), 
old log /var/log/testlog.11.gz does not exist
renaming /var/log/testlog.10.gz to /var/log/testlog.11.gz (rotatecount 15, logstart 1, i 10), 
old log /var/log/testlog.10.gz does not exist
renaming /var/log/testlog.9.gz to /var/log/testlog.10.gz (rotatecount 15, logstart 1, i 9), 
old log /var/log/testlog.9.gz does not exist
renaming /var/log/testlog.8.gz to /var/log/testlog.9.gz (rotatecount 15, logstart 1, i 8), 
old log /var/log/testlog.8.gz does not exist
renaming /var/log/testlog.7.gz to /var/log/testlog.8.gz (rotatecount 15, logstart 1, i 7), 
old log /var/log/testlog.7.gz does not exist
renaming /var/log/testlog.6.gz to /var/log/testlog.7.gz (rotatecount 15, logstart 1, i 6), 
old log /var/log/testlog.6.gz does not exist
renaming /var/log/testlog.5.gz to /var/log/testlog.6.gz (rotatecount 15, logstart 1, i 5), 
old log /var/log/testlog.5.gz does not exist
renaming /var/log/testlog.4.gz to /var/log/testlog.5.gz (rotatecount 15, logstart 1, i 4), 
old log /var/log/testlog.4.gz does not exist
renaming /var/log/testlog.3.gz to /var/log/testlog.4.gz (rotatecount 15, logstart 1, i 3), 
old log /var/log/testlog.3.gz does not exist
renaming /var/log/testlog.2.gz to /var/log/testlog.3.gz (rotatecount 15, logstart 1, i 2), 
old log /var/log/testlog.2.gz does not exist
renaming /var/log/testlog.1.gz to /var/log/testlog.2.gz (rotatecount 15, logstart 1, i 1), 
renaming /var/log/testlog.0.gz to /var/log/testlog.1.gz (rotatecount 15, logstart 1, i 0), 
old log /var/log/testlog.0.gz does not exist
log /var/log/testlog.16.gz doesn't exist -- won't try to dispose of it
renaming /var/log/testlog to /var/log/testlog.1

Ausgabe von ls /var/log/testlog*:

/var/log/testlog  
/var/log/testlog.1  
/var/log/testlog.2.gz

Kann mir bitte jemand einen Tipp zur Lösung dieses Problems geben?

Danke

Antwort1

Ich gehe hier hinkend aus, aber die Manpage besagt

-d, --debug
Turns on debug mode and implies -v. In debug mode, no changes will be made to the logs or to the logrotate state file. 

Logrotate macht also nichts. Es schreibt nur das aus, was eswürdetun. Wenn Sie eine ausführliche Ausgabe wünschen, geben Sie -v und nicht -d als Option an.

Bearbeiten:Die Tatsache, dass logrotate Nachrichten ausgibt wie

 log /var/log/testlog.16.gz doesn't exist -- won't try to dispose of it

ist nichts, worüber man sich Sorgen machen müsste. Tatsächlich ist es das erwartete Verhalten! Die ausführliche Ausgabe zeigt Ihnen genau, was es tut. Es versucht, die Versionsnummern zu erhöhen, beginnend mit der ältesten Datei testlog.15.gz, die nicht existiertnoch. Sobald 15 Rotationen durchgeführt wurden, wird dies passieren. Es ist kein Fehler. Das geht so weiter, bis schließlich testlog.1.gztutexistiert und wird in testlog.2.gz umbenannt

Da Sie angegeben haben

start 1 

testlog.0.gz ist wieder nicht da, aber trotzdem: testlog wird nach testlog.1 verschoben (ohne Komprimierung, wegen delaycompress)

Am Ende versucht es, die 16. Protokolldatei zu entsorgen, da

rotate 15

wurde angegeben. Die Datei ist nicht vorhanden (nochmals:noch), aber das sollte weder für Sie noch für das Programm wichtig sein. Die Verzeichnisliste zeigt, dass es genau das getan hat, was mir gesagt wurde. Wenn die Protokolle wiederholt rotiert werden, werden die „fehlenden“ Dateien angezeigt und die Meldungen werden weniger.

Schließlich führen Sie das Programm im ausführlichen Modus aus, Sie sollten also eine Ausgabe wie diese erwarten.

verwandte Informationen