Logrotate không xóa nhật ký cũ


14

vì một số lý do, các tệp nhật ký cũ không bị xóa. Ví dụ với apache

Tệp conf nói gì:

$ 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
}

Nội dung (cắt) của thư mục nhật ký:

# 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
[...]

Trên thực tế có rất nhiều trong số họ:

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

Lệnh logrotate với --verbose cho tôi điều này:

# /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
[...]

Có chuyện gì ở đây vậy? Các bản ghi được xoay nhưng không được gỡ bỏ? Tôi đang thiếu gì?

Câu trả lời:


17

cấu hình của bạn nói: xoay 2

điều đó có nghĩa là các tệp nhật ký được xoay 2 lần trước khi bị xóa, vì vậy logrotate chỉ quan tâm khoảng 2 tệp.

Tôi đoán là cấu hình đã được thay đổi tại một số điểm, bởi vì trước đó đã lưu giữ nhiều tệp nhật ký hơn, có thể nó giống như xoay 28. những tệp cũ hơn mà bạn phải xóa thủ công.


Tôi không thể chứng minh câu trả lời vì vậy tôi đoán nó đúng. Tuy nhiên tôi không hiểu tại sao access.log.3.gzvẫn còn hiện diện.
SamK

2
Bởi vì xoay 2 chỉ xử lý 2 tệp, tức là .1.gz và .2.gz và bỏ qua các tệp khác.
johnshen64

1
Tôi đã thay đổi xoay 365 thành xoay 90 và access.log.90.gz là thay đổi mới nhất cho đến nay. Access.log.91.gz đã bị xóa (vì logrotate chỉ giữ 90), nhưng không phải là 91. Vì vậy, johnshen64 là đúng, bạn phải xóa mọi thứ> 2.
Yvan

Đây là một mẹo về cách xử lý vấn đề này một cách tự động, tức là thông qua quản lý cấu hình trên nhiều máy chủ: serverfault.com/a/636883/9082
Martijn Heemels

-3

Nhật ký có hậu tố .gz không được xem xét vì bạn đã chỉ định: /var/log/apache2/*.log

Vì vậy, 2 .log và tất cả các tệp .gz vẫn còn.

Để thay đổi điều này đặt ở đó

/ var / log / apache2 / ** log * hoặc một số biểu thức chính quy.


Xin lỗi chỉ một dấu sao trước khi đăng nhập
Neg88

2
Đối với vấn đề dấu hoa thị, bạn có thể chỉnh sửa bài viết của mình. Tổng quát hơn, tại sao bạn nghĩ rằng câu trả lời được chấp nhận là sai? logrotate muốn các tệp tên cơ sở và giao dịch với các bổ sung .gz khi cần thiết.
Luật29

Câu trả lời này thực sự có hại vì có nguy cơ nó có thể dẫn đến các tệp bị xoay đi quay lại, ít nhất là với một số phiên bản logrotate. Nó sẽ nén các tệp trước, sau đó khớp các tệp đã nén và tiếp tục xoay chúng.
Richlv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.