Khi nào nên sử dụng tùy chọn delaycompress trong logrotate?


33

Trang người đàn ông logrotatenói rằng:

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

Tôi bối rối vì điều này. Nếu một chương trình không thể được yêu cầu đóng logfile của nó, nó sẽ tiếp tục viết mãi mãi , không phải trong một thời gian . Nếu quá trình nén bị hoãn sang chu kỳ quay tiếp theo, chương trình sẽ tiếp tục ghi vào tệp đó ngay cả sau chu kỳ xoay tiếp theo. Làm thế nào là hoãn giải quyết vấn đề?

Sự hiểu biết của tôi là copytruncatenên được sử dụng khi một chương trình không thể được yêu cầu đóng logfile. Tôi biết rằng một số dữ liệu được ghi vào logfile bị mất khi tiến hành sao chép.

Tôi đã xem tệp logrotate cho couchdb, và nó có cả hai copytruncatedelaycompresstùy chọn.

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

Có vẻ như không có điểm sử dụng delaycompresskhi copytruncateđã có. Tôi đang thiếu gì?

Câu trả lời:


27

Sự hiểu biết của bạn copytruncatelà chính xác, nhưng từ ngữ trong trang hướng dẫn delaycompresslà một chút sai lệch. Nói đúng hơn, nó sẽ nói "khi một số chương trình không thể được yêu cầu đóng ngay lập tức logfile" - ví dụ, nếu bạn đang sử dụng sharedscripts và script sẽ gửi tín hiệu đến tiến trình bằng cách sử dụng nhật ký khi tất cả các tệp nhật ký đã được xoay .


1
Khi tôi đang sử dụng copytruncate, không cần yêu cầu chương trình đóng logfile. Vì vậy, nó là vô nghĩa để chỉ định delaycompresscùng với copytruncate?
Anand Chitipothu

6
Không bao giờ sử dụng copytruncatetrừ khi bạn hoàn toàn phải làm thế, vì nó mất các mục nhật ký. Bạn có thể sử dụng cả hai tùy chọn nếu bạn muốn tính năng khác delaycompresscung cấp - khả năng đọc logfile trước mà không cần giải nén nó trước.
womble

Có lựa chọn nào khác ngoài việc copytruncatetôi không thể yêu cầu chương trình của mình tải lại không?
Anand Chitipothu

5
Không. Đó là lý do tại sao bạn nên sử dụng phần mềm không hút và sẽ chấp nhận tín hiệu để nói "tải lại nhật ký của bạn".
womble

3

Không chắc chắn nếu tôi hoàn toàn hiểu câu hỏi của bạn, nhưng nếu bạn hỏi những gì tôi nghĩ ... tôi sử dụng điều này:

postrotate
          killall -HUP syslog-ng
  endscript

Đó là một cách hay (hoặc ít nhất là một) để giết khúc gỗ và chuyển sang bước tiếp theo. Đối với các "chương trình" hấp dẫn, chẳng hạn như nền tảng ASA của Cisco ghi lại hàng tấn dữ liệu mỗi giây, nó hoạt động.


3

Chúng tôi sử dụng:

  • hằng ngày
  • trì hoãn
  • gật đầu

Điều này tạo ra bản sao cố định của apache access_log access_log.1để sau đó chúng tôi có thể chạy gói Thống kê của chúng tôi dưới dạng tập lệnh vào cuối ngày.

Ngày hôm sau logrotate nén tập tin tạo access_log.2.zip

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.