Như đã đề cập Zeeshan của tôi, các tùy chọn logrotate size
, minsize
, maxsize
là trình kích hoạt để xoay.
Để giải thích rõ hơn. Bạn có thể chạy logrotate thường xuyên như bạn muốn, nhưng trừ khi đạt đến ngưỡng như đạt được kích cỡ hoặc thời gian thích hợp được thông qua, nhật ký sẽ không được xoay.
Tùy chọn kích thước không đảm bảo rằng nhật ký xoay của bạn cũng có kích thước được chỉ định. Để có được chúng gần với kích thước quy định, bạn cần phải gọi chương trình logrotate đủ thường xuyên. Điều này là rất quan trọng.
Đối với các tệp nhật ký xây dựng rất nhanh (ví dụ: trong hàng trăm MB mỗi ngày), trừ khi bạn muốn chúng rất lớn, bạn sẽ cần đảm bảo logrotate được gọi thường xuyên! điều này là rất quan trọng.
Vì vậy, để dừng đĩa của bạn với các tệp nhật ký nhiều gigabyte bạn cần đảm bảo logrotate được gọi là đủ thường, nếu không xoay vòng sẽ không hoạt động tốt như bạn muốn.
trên Ubuntu, bạn có thể dễ dàng chuyển sang xoay theo giờ bằng cách di chuyển /etc/cron.daily/logrotate kịch bản để /etc/cron.hourly/logrotate
Hoặc thêm
*/5 * * * * /etc/cron.daily/logrotate
Để bạn/etc/tập tin crontab. Để chạy nó sau mỗi 5 phút.
Tùy chọn size
bỏ qua các tùy chọn thời gian hàng ngày, hàng tuần, hàng tháng. Tuy nhiên, hãy tính đến số lượng tối đa & maxsize.
Trang người đàn ông hơi khó hiểu ở đó. Đây là lời giải thích của tôi.
minsize
chỉ quay khi tệp đã đạt đến kích thước phù hợp và khoảng thời gian đã đặt đã trôi qua. ví dụ: mins 50MB + hàng ngày Nếu tệp đạt 50MB trước khi thời gian hàng ngày được đánh dấu, nó sẽ tiếp tục tăng cho đến ngày hôm sau.
maxsize
sẽ xoay khi nhật ký đạt đến kích thước đã đặt hoặc thời gian thích hợp đã trôi qua. ví dụ: tối đa 50MB + hàng ngày. Nếu tệp là 50MB và chúng tôi sẽ không vào ngày tiếp theo, nhật ký sẽ được xoay. Nếu tệp chỉ có 20MB và chúng tôi sẽ chuyển sang ngày tiếp theo thì tệp sẽ được xoay.
size
sẽ xoay khi kích thước nhật ký>. Bất kể định giờ/hàng ngày/hàng tuần/hàng tháng được chỉ định. Vì vậy, nếu bạn có kích thước 100M - điều đó có nghĩa là khi tệp nhật ký của bạn> 100M nhật ký sẽ được xoay nếu logrotate được chạy khi điều kiện này là đúng. Khi nó được xoay, nhật ký chính sẽ là 0 và lần chạy tiếp theo sẽ không làm gì cả.
Vì vậy, trong trường hợp của op. Cách cụ thể 50MB max Tôi muốn sử dụng một cái gì đó như sau:
/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}
Có nghĩa là ông muốn tạo 8hrs của bản ghi tối đa. Và sẽ có 8 người trong số họ không quá 50MB mỗi người. Vì anh ấy nói rằng anh ấy nhận được nhiều gigabyte mỗi ngày và giả sử họ tích lũy ở tốc độ khá ổn định và tối đa hóa được sử dụng, anh ấy sẽ kết thúc với khoảng gần đến mức tối đa đạt được cho mỗi tệp. Vì vậy, họ sẽ có khả năng gần 50MB mỗi. Với khối lượng mà họ xây dựng, anh ta sẽ cần phải đảm bảo rằng logrotate được chạy thường xuyên đủ để đáp ứng kích thước mục tiêu.
Vì tôi đã đặt hàng giờ ở đó, chúng tôi cần logrotate để chạy tối thiểu mỗi giờ. Nhưng kể từ khi họ xây dựng để nói 2 gigabyte mỗi ngày và chúng tôi muốn 50MB ...giả sử một tỷ lệ cố định là 83MB mỗi giờ. Vì vậy, bạn có thể tưởng tượng nếu chúng ta chạy logrotate mỗi giờ, mặc dù thiết lập maxsize đến 50 chúng ta sẽ kết thúc với 83MB log trong trường hợp đó. Vì vậy, trong trường hợp này thiết lập chạy đến mỗi 30 phút hoặc ít hơn là đủ.
Đảm bảo hoạt động của logrotate cứ sau 30 phút.
*/30 * * * * /etc/cron.daily/logrotate
Tốt. Một lưu ý nhỏ, tôi phát hiện ra rằng maxsize và minsize không hoạt động tốt với các distro cũ (như centos5 và ubuntu 10.10 ... sau này là EOL anyway). – tobixen