2015-06-30 14 views
7

Tôi mới hơn để đăng nhập. khi cấu hình đến thuộc tính "dateformat", có vẻ như logrotate không hỗ trợ strftime "% H". đây là cấu hình: { hàng ngày xoay 2 kích thước 3M missingok notifempty dateext DateFormat -% Y% m% D_% H:% M:% S ... }logformate dateformat dường như không hỗ trợ% H:% M:% S

sự xoay định dạng tệp có xu hướng giống như: uwsgi_dev.log-20150630_% H:% M:% S, nhưng tôi muốn chính xác "phút và giây".

cảm ơn

Trả lời

4

Hỗ trợ cho% H được thêm vào trong phiên bản 3.9.0. Trong các phiên bản trước đó, logrotate không hỗ trợ strftime "% H:

DateFormat format_string: Xác định phần mở rộng cho dateext sử dụng các ký hiệu tương tự như strftime (3) chức năng Chỉ% Y% m% d và% s specifiers đang có. cho phép.

Từ trang logrotate người http://linux.die.net/man/8/logrotate

Tuy nhiên, bạn có thể sử dụng %s trong chuỗi DateFormat, đó là số giây kể từ 1970/01/01. bạn có thể đặt dateformat -%Y%m%d-%s. Điều này sẽ tạo tên tệp duy nhất mỗi lần nhật ký được xoay, vì vậy bạn có thể xoay tệp nhiều lần trong ngày. Thật không may, phần %s sẽ không dễ đọc, nhưng bạn có thể dễ dàng chuyển đổi nó trở lại thành một ngày có thể đọc được với perl -e "print scalar(localtime(1451214849))".

Trên một số hệ thống, chương trình date cho phép chuyển đổi dễ dàng như vậy với date -d @1451214849 (ví dụ: GNU date). Trên hầu hết các hệ thống (ví dụ: Solaris date), bạn có thể gặp may mắn với cú pháp như date -d "1970-01-01 + 1451214849 sec". Lưu ý rằng Busybox date chỉ hỗ trợ thủ thuật @ nhưng không hỗ trợ các biểu thức phức tạp của ví dụ thứ hai.

+1

Hỗ trợ cho% H được thêm vào trong phiên bản [3.9.0] (https://github.com/logrotate/logrotate/blob/master/CHANGES). –

+1

Cảm ơn Ivan, điểm tốt; Tôi đã chỉnh sửa câu trả lời của mình. –

Các vấn đề liên quan