Làm cách nào tôi có thể xoay nhiều tệp nhật ký thành thư mục con khác nhau trên mỗi vòng quay?


11

Tôi có một thư mục chứa nhiều tệp nhật ký, tất cả đều muốn xoay vòng hàng ngày. Đối với mục đích tổ chức, tôi muốn có thể di chuyển các bản ghi được xoay vào một thư mục khác (hoặc thư mục con) được đặt tên theo ngày, giữ bản ghi nhật ký cuối tuần.

Tôi có thể sử dụng logrotate để đạt được hầu hết điều này bằng cách chuyển các tệp tại chỗ hoặc thậm chí di chuyển chúng sang một thư mục khác bằng cách sử dụng lệnh olddirnhưng tôi gặp khó khăn khi tìm giải pháp tạo các thư mục con riêng lẻ trên mỗi vòng quay. Làm thế nào tôi có thể đạt được điều này?:

Logs to rotate: /var/log/example/*

Desired target directories (keeping a week):
    /var/log/example/20121006/*
    [ ... ]
    /var/log/example/20121012/*

Câu trả lời:


8

Bạn sẽ có thể gọi một tập lệnh bên ngoài trong lệnh postrotate:

postrotate
  /path/to/your.sh
endscript

và có kịch bản nào thực hiện việc di chuyển, ví dụ:

#!/bin/bash

newdir=/var/log/example/`date +%Y%m%d`

mkdir $newdir
mv /var/log/example.1.gz $newdir

find /var/log/example -mindepth 1 -maxdepth 1 -mtime +7 \
  -type d -print0 | xargs -0 rm -rf

Tuy nhiên, có thể dễ dàng hơn khi chỉ sử dụng dateextchỉ thị. Cùng với đó, các tệp được xoay sẽ được gắn thêm dấu thời gian (mặc dù không được chuyển sang thư mục khác).

Xem logrotate(8)để biết chi tiết về cả hai chỉ thị.


Có vẻ như postrotatesẽ làm được mẹo. Điều duy nhất tôi cần thêm là thanh lọc các thư mục cũ vượt quá một số lượng nhất định hoặc cũ hơn một ngày nhất định.
Dave Forgac

1
Xem câu trả lời cập nhật. Các find | xargslệnh nên xóa tất cả các thư mục con ngay lập tức /var/log/examplenếu họ đã được sửa đổi kéo dài hơn 7 ngày trước.
Ansgar Wiechers

1

Bạn có olddirchỉ thị bạn có thể sử dụng trong tập tin cấu hình.

Từ tài liệu:

olddir
Nhật ký được chuyển vào thư mục để luân chuyển. Thư mục phải nằm trên cùng một thiết bị vật lý với tệp nhật ký được xoay và được coi là có liên quan đến thư mục chứa tệp nhật ký trừ khi tên đường dẫn tuyệt đối được chỉ định. Khi tùy chọn này được sử dụng, tất cả các phiên bản cũ của nhật ký sẽ kết thúc trong thư mục. Tùy chọn này có thể bị ghi đè bởi noolddirtùy chọn.

Tham khảo : https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html

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.