Làm cách nào để định cấu hình logrotate để không xóa các tệp nhật ký của tôi sau khi xoay?


24

Có cách nào để làm điều này?


Bạn có thể cho chúng tôi biết lý do tại sao bạn muốn làm điều này? Có lẽ có những lựa chọn khác ...
chmeee

Trong trường hợp của tôi, thật tuyệt khi tải các bản ghi cũ lớn về bộ nhớ ngoài và giữ các bản ghi mới trên máy chủ. Vì vậy, tôi cần một bộ chia log đơn giản.
sekrett

2
Trường hợp sử dụng của tôi cho cấu hình này là: Tôi muốn giữ nhật ký của mình mãi mãi, vì tôi có thể cần nó cho mục đích kiểm toán, NHƯNG tôi muốn các tệp của mình được xoay để nhật ký hiện tại không phát triển quá lớn và các bản ghi có thể xoay đã nén - nếu không, việc sao lưu nhật ký vào máy chủ bên ngoài quá khó khăn và việc kiểm tra các tệp cũng trở nên quá chậm.
Rudolf Mayer

Câu trả lời:


32

Trong tệp logrotate.conf của bạn (hoặc tệp logrotate.d tương đương), hãy thay đổi dòng có nội dung "

rotate 10

(số của bạn có thể khác) đến một số lớn hơn. Điều đó sẽ nói với nó để giữ bản ghi nhiều ngày. Bạn có thể làm cho nó 36500, sẽ kéo dài 100 năm.


6
Khi tôi làm điều này trên một quả mâm xôi pi (raspian), nó làm cho nó đóng băng mỗi đêm. Khi tôi đã chạy các quy trình và mở tệp bằng bàn điều khiển nối tiếp và phát hiện ra rằng nó cố gắng đổi tên 100000 tệp không tồn tại. Vì vậy, hãy cẩn thận của nó. Thật không may, tôi không có thông tin chi tiết hơn
Christian

0

Tôi đã tìm kiếm điều này để thực hiện luân chuyển các bản sao lưu cơ sở dữ liệu của mình hàng ngày, hàng tuần và hàng tháng; Vì vậy, tôi xoay tệp hàng ngày nhưng giữ tệp để thực hiện xoay vòng hàng tuần, và tương tự cho luân chuyển hàng năm.

Sử dụng tùy chọn sao chép. Từ hướng dẫn:

copy

sao chép Tạo một bản sao của tệp nhật ký, nhưng không thay đổi bản gốc. Ví dụ, tùy chọn này có thể được sử dụng để tạo ảnh chụp nhanh của tệp nhật ký hiện tại hoặc khi một số tiện ích khác cần cắt bớt hoặc phân tích tệp. Khi tùy chọn này được sử dụng, tùy chọn tạo sẽ không có hiệu lực, vì tệp nhật ký cũ vẫn giữ nguyên vị trí.


Điều này giống như nhận xét bên dưới ( serverfault.com/a/50186/275485 ) và không cung cấp câu trả lời đúng; sao chép không có nghĩa là các tệp cũ của bạn đã bị xoay không bị xóa ..
Rudolf Mayer

-3

Đặt sang một bên rằng xoay vòng liên quan đến việc xóa ... ;-)

Có vẻ như bạn chỉ cần thêm từ 'sao chép' vào tệp thích hợp (có thể là trong /etc/logrotate.d). Ví dụ: tập lệnh logrotate apache2 sẽ trông như thế này:

/var/log/apache2/*.log {
    hàng tuần
    mất tích
    xoay 52
    nén
    trì hoãn
    đáng chú ý
    bản sao
    chia sẻ
    postrotate
        if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; sau đó
            /etc/init.d/apache2 tải lại> / dev / null
        fi
    kết thúc
}

Hãy thử điều đó, và xem nếu nó làm những gì bạn muốn.


2
Giả sử rằng anh ta muốn các tập tin được "xoay" nhưng không bao giờ xóa các tập tin cũ, điều này sẽ không làm điều đó. Thêm "bản sao" vào khổ thơ có nghĩa là tệp gốc sẽ tiếp tục phát triển mãi mãi nhưng cuối cùng các bản sao cũ của tệp sẽ bị xóa. Theo tôi hiểu, "sao chép" chủ yếu hữu ích khi bạn mong đợi một số quy trình khác sẽ cắt / xóa bản gốc.
Insyte

Chính xác, đó là những gì tôi nghĩ rằng anh ta đang yêu cầu. Ông đặc biệt yêu cầu một cách để "không xóa các tệp nhật ký của tôi", không phải là một cách để "không xóa các kho lưu trữ cũ của các tệp nhật ký của tôi". Đoán tôi nên cảnh giác hơn với các câu hỏi chỉ liên quan đến một chủ đề và không có cơ thể ;-)
Justin Ellison

2
Cụm từ "sau khi xoay" cung cấp một đầu mối.
Tạm dừng cho đến khi có thông báo mới.

4
"Đặt sang một bên rằng xoay vòng liên quan đến việc xóa ..." Không nhất thiết. Xoay có thể liên quan đến việc chỉ nén các bản ghi cũ và giữ chúng, đó là những gì có vẻ như câu hỏi yêu cầu.
phản xạ
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.