Logrotate는 오래된 로그를 제거하지 않습니다


14

어떤 이유로 든 이전 로그 파일은 삭제되지 않습니다. 아파치 예제

conf 파일의 내용 :

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

로그 폴더의 (자른) 내용 :

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

실제로 많은 것들이 있습니다.

# ls /var/log/apache2/ | wc -l
85

--verbose와 함께 logrotate 명령을 사용하면 다음과 같은 결과를 얻을 수 있습니다.

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

여기서 무엇이 잘못 되었습니까? 로그가 회전되었지만 제거되지 않습니까? 내가 무엇을 놓치고 있습니까?

답변:


17

당신의 구성은 말합니다 : 회전 2

즉, 로그 파일이 제거되기 전에 2 번 회전되므로 logrotate는 약 2 개의 파일 만 처리합니다.

내 생각 엔 구성이 어느 시점에서 변경되었다는 것입니다. 이전에는 더 많은 로그 파일이 유지 되었기 때문에 아마도 28 번 회전과 같았을 것입니다. 이러한 오래된 파일은 수동으로 제거해야합니다.


나는 대답을 증명할 수 없으므로 그것이 옳은 것 같아요. 그러나 나는 왜 access.log.3.gz여전히 존재 하는지 이해하지 못한다 .
SamK

2
회전 2는 2 개의 파일, 즉 .1.gz 및 .2.gz 만 처리하고 다른 파일은 무시합니다.
johnshen64

1
회전 365를 90으로 회전하도록 변경했으며 지금까지 access.log.90.gz가 가장 최근에 변경되었습니다. access.log.91.gz는 제거되었지만 (logrotate는 90 만 유지하므로)> 91이 아닙니다. 따라서 johnshen64가 맞으므로> 2를 제거해야합니다.
Yvan

다음은이를 자동으로 처리하는 방법에 대한 팁입니다. 예 : 많은 서버에서 구성 관리를 통해 : serverfault.com/a/636883/9082
Martijn Heemels

-3

/var/log/apache2/*.log를 지정했기 때문에 접미사가 .gz 인 로그는 고려되지 않습니다.

따라서 2 .log 및 모든 .gz 파일이 남아 있습니다.

이것을 바꾸려면

/ var / log / apache2 / ** log * 또는 일부 정규식.


로그 전에 별표 하나만 미안
Neg88

2
별표 문제의 경우 게시물을 편집 할 수 있습니다. 더 일반적으로, 당신은 왜 대답이 틀렸다고 생각합니까? logrotate는 기본 이름 파일을 원하고 필요에 따라 .gz 추가를 처리합니다.
Law29

이 대답은 실제로 일부 로그 회전 버전에서 파일이 반복해서 회전 할 수있는 위험이 있기 때문에 실제로 유해합니다. 먼저 파일을 압축 한 다음 압축 파일을 일치시키고 계속 회전시킵니다.
Richlv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.