Log Rotate hay còn gọi là “quay vòng log” nó có tác dụng chia log ra thành file nhỏ, rồi nén log theo từng ngày để dễ dàng quản lý giảm dung lượng đĩa cứng. Với mỗi website lại có access log và error log khác nhau thì bạn phải cấu hình lại logrotate nếu không toàn bộ log sẽ được dồn vào một file duy nhất, rất khó khăn khi đọc log và quản lý. Sau đây tôi sẽ hướng dẫn bạn tự động rotate các file access_log apache và error_log. Điều này có thể được sử dụng tiện ích logrotate như giải thích dưới đây. Thêm các dòng sau đây đến thư mục./etc/logrotate.d Mã: # vi /etc/logrotate.d/apache /usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log { size 100M compress dateext maxage 30 postrotate /usr/bin/killall -HUP httpd ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" ramesh@thegeekstuff.com endscript } Giải thích: size 100M - Khi access_log, và error_log đạt 100M, nó sẽ được luân chuyển. Bạn cũng có thể sử dụng 100k (cho Kb), 100G (đối với GB). Thay vì kích thước, bạn cũng có thể luân chuyển các bản log apache sử dụng tần số (hàng ngày, hàng tuần, hàng tháng). compress - Chỉ ra rằng các tập tin log luân chuyển sẽ được nén. Theo mặc định ta sẽ sử dụng gzip. Vì vậy, các tập tin luân chuyển sẽ có phần đuôi là .gz. dateext - Thêm định dạng YYYYMMDD vào các tập tin luân chuyển log tức là thay vì access_log.1.gz, nó tạo ra access_log-20110616.gz. maxage - Chỉ ra thời gian bao lâu các tập tin luân chuyển log nên được giữ. Trong ví dụ này, nó sẽ được giữ trong 30 ngày. postrotate và endscript - Bất kỳ lệnh kèm theo giữa hai thông số này sẽ được thực hiện sau log được luân chuyển. Quan trọng: Khi bạn luân chuyển các tập tin log, bạn muốn apache để viết các tin nhắn log mới cho access_log và error_log mới được tạo ra. Để làm được điều này, bạn cần phải gửi các tín hiệu HUP cho apache. Hãy chắc chắn sử dụng đoạn mã /usr/bin/killall -HUP httpd, nó sẽ khởi động lại apache sau khi luân chuyển các tập tin log. Ngoài ra, bạn có thể muốn gửi một email cho bản thần để thông báo rằng các tập tin log đã được luân chuyển, cùng với kết quả đầu ra của lệnh ls -ltr là body của email. tức là thêm những điều sau đây giữa "postrotate" và "endscript" tùy chọn (sau khi dùng lệnh killall). Mã: ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" ramesh@thegeekstuff.com Script /etc/cron.daily/logrotate chạy hằng ngày sẽ thực hiện luân chuyển log của tất cả các tập tin như quy định trong /etc/logrotate.conf và tất cả các tập tin trong thư mục /etc/logrotate.d. Sau khi cấu hình tập tin /etc/logrotate.d/apache, cho mục đích thử nghiệm, bạn có thể gọi script logrotate như dưới đây. Mã: /etc/cron.daily/logrotate Một khi các tập tin log được luân chuyển, sử dụng lệnh ls để xác minh. Như chúng tôi đã giải thích ở trên, các tập tin luân chuyển log sẽ được giữ trong 30 ngày. Mã: # ls /usr/local/apache2/logs access_log error_log access_log-20110716.gz error_log-20110716.gz