Vâng, có một cách thích hợp: Bạn hoàn toàn không xóa nhật ký. Bạn xoay chúng. Xoay vòng bao gồm chuyển đổi đầu ra nhật ký sang một tệp mới, dưới cùng tên, với các tệp nhật ký N trước đó được lưu dưới một tập hợp các tên tệp N liên quan.
Làm thế nào một người quay các bản ghi phụ thuộc vào cách người ta viết chúng ở vị trí đầu tiên. Đây là một điểm bị bỏ qua. Một số câu trả lời ở đây ít nhất chạm vào nó, đề cập đến việc một số chương trình ghi nhật ký giữ một mô tả tệp mở cho tệp nhật ký, vì vậy chỉ cần xóa tệp sẽ không giải phóng không gian, hoặc thậm chí chuyển đầu ra sang tệp nhật ký mới.
Ví dụ, nếu chương trình ghi tệp nhật ký là multilog
từ daemontools
gói , thì bạn không làm gì để xoay vòng nhật ký - không có tập lệnh thủ công, không có cron
công việc. Đơn giản chỉ cần nói multilog
rằng đầu ra nhật ký là vào một thư mục, và chính nó sẽ duy trì một tập hợp các tệp nhật ký N được xoay tự động và có kích thước trong thư mục đó.
Nếu chương trình ghi các tệp nhật ký là svlogd
từ runit
gói , ví dụ khác, thì áp dụng tương tự. Bạn không làm gì cả ngoài việc chỉ công cụ vào một thư mục. Nó sẽ tự duy trì một tập hợp các tệp nhật ký N được xoay tự động và có kích thước trong thư mục đó.
Nếu bạn đang sử dụng rsyslog
để ghi tệp nhật ký, thì chương trình ghi nhật ký có thể được yêu cầu dừng sau khi tệp nhật ký đạt đến kích thước nhất định và chạy tập lệnh . Bạn phải viết phần chính của tập lệnh, để thực sự đổi tên tệp nhật ký và xóa các tệp nhật ký cũ dựa trên các ràng buộc tổng kích thước, nhưng ít nhất chương trình ghi nhật ký đã đóng tệp và tạm dừng ghi nhật ký trong khi điều này đang xảy ra.
Cũ syslogd
cách xoay các bản ghi, vẫn mong đợi của chương trình khai thác gỗ như syslog-ng và như được minh họa bằng các công cụ như logrotate
được đề cập bởi djangofan
trong một câu trả lời ở đây, là hơi lộn xộn hơn. Một người chạy một cron
công việc định kỳ đổi tên các tệp nhật ký và khởi động lại trình nền ghi nhật ký (sử dụng bất kỳ trình giám sát trình nền nào mà nó đang chạy). Vấn đề với điều này, tất nhiên là nó không thực thi giới hạn kích thước tổng thể. Vào những tuần chậm, người ta có thể nhận được N tệp nhật ký hàng ngày rất nhỏ, trong khi vào những ngày bận rộn, người ta có thể nhận được 1 tệp nhật ký rất lớn vượt quá giới hạn kích thước.
Đây là lý do tại sao sau này và các công cụ tốt hơn thích multilog
và svlogd
có các tùy chọn cấu hình kích thước tệp và thực sự tự kiểm tra kích thước tệp nhật ký. Thế giới đã học được rằng việc bỏ phiếu nhật ký theo lịch trình với các cron
công việc, hoặc thậm chí là một logrotate
daemon, khiến các cửa sổ bị sai kích thước và là nơi thích hợp để thực hiện các kiểm tra này và thực thi nghiêm ngặt các mũ có kích thước do quản trị viên xác định. các tệp nhật ký không bao giờ nuốt phân vùng mà chúng đang bật, nằm trong chương trình thực sự ghi các tệp ra ở vị trí đầu tiên.